Apache fork 在 futex 系统调用上挂起

Apache fork 在 futex 系统调用上挂起

我们有一个 LAMP 托管服务器,Nginx 作为静态文件的前端,以及 Apache 的反向代理。Apache + mod_php 正在处理 php 请求。

阿帕奇

Server Version: Apache/2.4.10 (Debian) mod_fastcgi/mod_fastcgi-SNAP-0910052141 PHP/5.6.29-0+deb8u1
Server MPM: prefork

PHP

PHP Version 5.6.29-0+deb8u1
OPCache enabled
max_execution_time 60

PHP 脚本因错误而终止超出最大执行时间 60 秒,但 apache fork 仍在尝试满足该请求。

Strace apache 子进程为空或显示 futex 系统调用

strace -p <PID>
Process <PID> attached
futex(0x7f16c503890, FUTEX_WAIT_PRIVATE, 2, NULL

服务器状态页面显示,此类进程处于发送答复或正常完成状态,自最近一次请求开始以来已用掉大量秒数,超出了 Apache 超时值。

Apache 和 php 都是标准的 Debian Jessie 主软件包。Debian 版本是 8.7

可能存在什么问题,以及我们如何更改 apache 设置来修复这些因太长的 php 请求而挂起的分叉。

答案1

经过几天的调查,我发现问题与 php-xdebug 扩展有关。在启用的 php 模块中禁用 xdebug 后,挂起的分支就消失了。

相关内容