Apache/PHP7.3 运行 in Docker 随机断开与空响应的连接

Apache/PHP7.3 running in Docker randomly drops connection with empty response

我发现了几个类似的问题:

不过这些似乎对查找原因没有帮助。我可以在重新加载特定页面时复制该行为 ~20 次。

  1. 运行 当前的 apache2 (= 2.4.38-3+deb10u4)。我试图禁用 opcache,删除 MaxRequestsPerChild 没有任何效果。
  2. Apache 日志没有显示任何错误。该请求甚至没有记录。
  3. USE_ZEND_ALLOC=0好像没有效果,问题依旧。
  4. 我尝试安装 mod_forensic,这表明收到了请求。然后没有记录错误或已完成的请求。
  5. 容器在 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

https://serverfault.com/a/66759

终于找到了:

进程被主机的 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

这从未记录在容器中,因此很难找到。