Apache 和 MySQL 每天多次导致服务器瘫痪

Apache 和 MySQL 每天多次导致服务器瘫痪

我在解决 Ubuntu 12.04 服务器的瓶颈问题时遇到了困难。

我在服务器上运行一个非常小的内部网网站。每分钟都会有几次小型 Web 请求(SOAP、HTML、REST 等),但总的来说,Web 服务器的工作量并不大。该服务器仅用作少数用户的 Web 服务器和 SMB 文件服务器。

大约 10 天前,以及此后的每天多次,服务器速度变得缓慢。所有 SMB 连接都暂时中断,ping 请求超时,SSH 会话中断,并且 Web 服务器变得无响应。这种“停电”持续 30 秒到几分钟不等。之后,服务器恢复正常,所有请求响应时间和服务响应时间都恢复正常。

我使用 atop 将问题缩小到似乎是 Apache 和可能是 MySQL 占用了服务器。停电期间没有其他进程引起怀疑。在这些停电期间,Apache 进程的数量从 1-4 个跃升至 16 个以上。每个进程占用 5-10% 的 CPU,因此累计起来,CPU 占用率达到 100%。MySQL 的工作速度也高于正常水平,但只占用了大约 15% 的 CPU。

我研究了断网期间的 Apache 日志文件(access.log 和 error.log),没有发现任何可疑或异常的 Web 请求或问题。断网前的所有请求都正常,因为这些请求是在正常时间发出的。当然,在断网期间,没有记录任何访问,因为服务器没有处理 Web 请求。

我认为,如果有一个 Web 请求使服务器工作繁重,Apache 仍会很好地处理所有其他请求,从而使 Apache 进程数仅略高一些。Apache 的进程数为 16-20 甚至更高,这让我想知道为什么服务器没有响应任何请求。也许除了 Apache 之外还有其他问题??

我确信 Apache 是导致速度变慢的罪魁祸首,但我的经验不足,不知道如何进一步研究这个问题。

关于我应该采取的故障排除步骤的任何进一步建议都会有所帮助。

相关内容