Apache/PHP7.3 运行 in Docker 随机断开与空响应的连接
Apache/PHP7.3 running in Docker randomly drops connection with empty response
我发现了几个类似的问题:
- APACHE, PHP Server return randomly empty response
- https://serverfault.com/questions/66662/apache-gives-empty-reply
- 及其他
不过这些似乎对查找原因没有帮助。我可以在重新加载特定页面时复制该行为 ~20 次。
- 运行 当前的 apache2 (= 2.4.38-3+deb10u4)。我试图禁用 opcache,删除
MaxRequestsPerChild
没有任何效果。
- Apache 日志没有显示任何错误。该请求甚至没有记录。
USE_ZEND_ALLOC=0
好像没有效果,问题依旧。
- 我尝试安装
mod_forensic
,这表明收到了请求。然后没有记录错误或已完成的请求。
- 容器在 Kubernetes 中是 运行,我无法在 运行 本地直接用 Docker 机器复制问题,这就是为什么我认为这可能是由某些内存设置引起的。但是我找不到可能导致此问题的原因,因为没有一条错误消息。
您能想出发生这种情况的任何原因吗?
编辑 1:
我尝试将日志级别设置为跟踪:
https://gist.github.com/knyttl/861e8a0fe5651408df37cd5c3874946b
请求处理完毕,可以看到:
[Tue Oct 20 08:37:55.825454 2020] [core:trace4] [pid 1] mpm_common.c(536): mpm child 388 (gen 2/slot 4) exited
没有错误也没有反应。
编辑2:
我更新到 php7.4,问题仍然存在。
你为什么不使用 Jorge 的答案?
Finally solved by adding to /etc/apache2/envvars:
export USE_ZEND_ALLOC=0
终于找到了:
进程被主机的 OOM killer 静默杀死:
[4019392.626796] Memory cgroup out of memory: Kill process 4178127 (apache2) score 1137 or sacrifice child
[4019392.636520] Killed process 4178127 (apache2) total-vm:143960kB, anon-rss:22856kB, file-rss:10472kB, shmem-rss:28228kB
这从未记录在容器中,因此很难找到。
我发现了几个类似的问题:
- APACHE, PHP Server return randomly empty response
- https://serverfault.com/questions/66662/apache-gives-empty-reply
- 及其他
不过这些似乎对查找原因没有帮助。我可以在重新加载特定页面时复制该行为 ~20 次。
- 运行 当前的 apache2 (= 2.4.38-3+deb10u4)。我试图禁用 opcache,删除
MaxRequestsPerChild
没有任何效果。 - Apache 日志没有显示任何错误。该请求甚至没有记录。
USE_ZEND_ALLOC=0
好像没有效果,问题依旧。- 我尝试安装
mod_forensic
,这表明收到了请求。然后没有记录错误或已完成的请求。 - 容器在 Kubernetes 中是 运行,我无法在 运行 本地直接用 Docker 机器复制问题,这就是为什么我认为这可能是由某些内存设置引起的。但是我找不到可能导致此问题的原因,因为没有一条错误消息。
您能想出发生这种情况的任何原因吗?
编辑 1:
我尝试将日志级别设置为跟踪:
https://gist.github.com/knyttl/861e8a0fe5651408df37cd5c3874946b
请求处理完毕,可以看到:
[Tue Oct 20 08:37:55.825454 2020] [core:trace4] [pid 1] mpm_common.c(536): mpm child 388 (gen 2/slot 4) exited
没有错误也没有反应。
编辑2:
我更新到 php7.4,问题仍然存在。
你为什么不使用 Jorge 的答案?
Finally solved by adding to /etc/apache2/envvars:
export USE_ZEND_ALLOC=0
终于找到了:
进程被主机的 OOM killer 静默杀死:
[4019392.626796] Memory cgroup out of memory: Kill process 4178127 (apache2) score 1137 or sacrifice child
[4019392.636520] Killed process 4178127 (apache2) total-vm:143960kB, anon-rss:22856kB, file-rss:10472kB, shmem-rss:28228kB
这从未记录在容器中,因此很难找到。