apache2 网络服务器上出现奇怪的过载

apache2 网络服务器上出现奇怪的过载

我最近从另一位开发人员那里继承了一个 Web 服务器设置。它基本上如下:

2 个运行 apache 2 的 Web 服务器 2 个运行 nginx 的负载均衡器 2 个运行 MySQL 的数据库服务器

大约每周一次,Apache Web 服务器都会对请求失去响应,负载均衡器最终会返回 504 网关超时。我登录到 Web 服务器并检查了它返回的正常运行时间: 18:40:49 up 5 days, 20:15, 1 user, load average: 122.37, 119.80, 107.57 与实例可用的进程数(8)相比,这个时间非常高。

为了尽快恢复正常,我重新启动了网络服务器,一切恢复正常:18:54:19 up 5 min, 1 user, load average: 0.11, 0.22, 0.10

我并不要求明确的答案,因为我应该进一步研究问题的根源,但我希望得到一些有关此问题的提示和建议:

  • 您认为为什么会发生这种情况?
  • 有哪些方法可以让我进一步研究这个问题,以便能够确定问题的根源?我需要一些关于在哪里和寻找什么的指示。

谢谢您的帮助。

答案1

通过重启即可解决的高负载可能是某种泄漏的征兆。如果内存使用量由于内存泄漏而增加,或者仅仅因为应用程序平台维护一些随时间增长的数据结构,那么服务器最终可能会进行大量交换。

这显然取决于很多因素,但我见过内存过于紧张的网络服务器表现出与您描述的一样的症状。

另一种可能性是,应用程序产生后台线程,由于某种原因,这些线程持续运行并消耗 CPU 时间或其他资源。

我强烈建议您向前任所有者询问可能消耗资源(内存和 CPU)的线索。如果服务器受到攻击,也可能会出现您描述的症状,但如果不知道服务器应该如何运行,就很难分辨出区别。即使攻击不是原因之一,您仍然需要了解应用程序才能调试问题。

相关内容