Apache 在重启后导致负载激增

Apache 在重启后导致负载激增

我的服务器运行的是 Ubuntu 18.04.5 LTS,带有 LAMP 堆栈(PHP 7.4)和使用 Prefork MPM 的 Apache 版本 2.4.29。我的服务器有 16 个 CPU 和 29GB 的 RAM。该服务器托管 258 个网站。

每当我重启服务器时,我都会注意到(使用 top 命令)apache 正在创建大量进程。这完全使服务器超负荷。这仅在我重启服务器或手动停止 apache(service apache2 stop)然后启动 apache(service apache2 start)时才会发生。

通常这是 top 的输出(在正常时段):

在此处输入图片描述

手动重启或停止并启动 apache 后,平均负载上升到 126.4 以上!它会慢慢地(大约 10-15 分钟)恢复正常。重启或停止并启动 apache 后的前 5 分钟,负载会稳步上升,直到达到 126-130 左右。

这是我的 MPM 配置(/etc/apache2/mods-enabled/mpm_prefork.conf):

<IfModule mpm_prefork_module>
     StartServers           5
     MinSpareServers        5
     MaxSpareServers        10
     MaxRequestWorkers      150
     MaxConnectionsPerChild 0
 </IfModule>

此外,KeepAlive 为 ON、MaxKeepAliveRequests 为 100 且 KeepAliveTimeout 为 2。

非常奇怪的是,我制作了该服务器的精确副本,并在副本上放置了一些网站(6 个网站),当我重新启动或在此副本服务器上启动和停止 apache 时,不会发生此行为。这是上述服务器的精确副本,它仅托管 6 个网站(流量少得多),而不是 258 个。

该问题是否可能是由于重启期间有太多客户端连接等待 Apache 响应,而当 Apache 服务器最终重新启动时,它会用大量连接淹没 Apache 而导致的?

增加 MPM 配置中的值是否有帮助?我检查过日志,但从未超过 MaxRequestWorkers。

相关内容