如何解决在Docker中运行的Apache / PHP7.3随机丢弃具有空响应的连接
我发现了几个类似的问题:
- 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,问题仍然存在。
解决方法
我终于找到了:
该进程被主机的OOM杀手无声地杀死:
[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
此信息从未在容器中记录过,因此很难找到。
,您为什么不使用Jorge的答案?
最后通过添加到/ etc / apache2 / envvars来解决:
导出USE_ZEND_ALLOC = 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。