我正在使用带有 php-fpm 的事件 mpm 运行 apache Apache/2.4.23 (Ubuntu),有时 apache 会挂起几分钟。我会收到服务器已关闭的通知,我会进行调查,但没有发现任何问题。错误和访问日志没有显示任何异常。服务器负载很低,内存充足,如果我在命令行上运行 apachectl status 来查看会挂起的记分卡。最终,它会在几分钟后加载,整个记分卡设置为 W,然后网站将再次开始加载。在新的服务器设置中,这种情况每天发生一次,我感觉这与我的 mpm 事件配置有关。有人知道是什么原因造成的吗?
答案1
我们今天调试了一个问题,它完全符合您的描述。我们在 Debian Stretch 上的 Apache 2.4.25 上遇到了这个问题。
通过阅读 GDB 线程转储和在 Google 上搜索可疑符号,我们最终找到了这个似乎符合该问题的错误报告:
https://bz.apache.org/bugzilla/show_bug.cgi?id=60956
看来这个错误是在 Apache 2.4.12 中引入的,并最终在 2.4.28 中得到修复。我们将 Apache 2.4.33 从 Debian Buster 反向移植到 Stretch。我们必须监控服务器几天才能确定,但我们非常有信心这已经为我们解决了这个问题。
答案2
我在使用 Event MPM 的 Apache/2.4.25 (cPanel) 时也遇到了同样的问题。它偶尔会挂起一两分钟,每天或两天一次。当它挂起时,CPU、内存、TCP 连接都正常,但没有来自 http 的响应,包括静态内容,甚至 /server-status。几秒钟后,一切恢复正常。没有错误日志。
我的服务器配置较低,静态内容并发连接数约为 50,内存为 16G,SSD 为 SSD。所以这肯定不是硬件问题。
没有缓存模块,cgi模块,php/php-fpm内容。但我有mod_proxy和mod_wsgi(守护进程),我不知道它们是否有关联。
自从我在 cPanel 中将其更改为 worker MPM 后,问题就消失了。