我的 Linux CentOS 专用服务器目前遇到了非常严重的问题。由于某种特殊原因,我的所有内存都被 apache 占用,结果导致我的 qmail 进程崩溃。
首先,如果 apache 占用了所有的内存,为什么 qmail 会崩溃?
我如何才能查明导致此问题的原因?Media Temple 的支持团队正在帮助我,但这超出了他们的支持范围,因此我不确定他们还能为我提供什么帮助。
我对此确实感到很困惑,因为似乎没有合理的解释说明为什么内存被耗尽。我网站的流量没有比平时多
向您提供有关情况的一些信息:
- 似乎所有这一切都是在我更新 Plesk 和我的容器时开始的。然而,我不能确定这一点,很可能我在同一天做了其他事情
- 当我查看 beancounters 时,它显示 tcpsndbuf 中有一个 547225 的失败数。我不知道这意味着什么,但这就是我相信问题出在 Apache 上的原因。我可以进一步研究这个问题吗?
- 虽然可能无关紧要,但几周前我使用 Apache Benchmarking 工具模拟了我的某个网站的 1000 次访问。
- 几周前,我也关注了媒体圣殿‘使它更好的步骤' 安装 Monit、Munin、Plesk Health Monitor 和常规 Apache 和 MySQL 调优。这些步骤无疑对服务器产生了负面影响,因为从那时起,我的内存消耗就高了很多。我尝试恢复到以前的配置文件但并没有什么效果。
我花了很长时间试图弄清楚这个问题,但我觉得这个问题对我来说有点太难了。有人能给我一些建议吗?
更新
我忘了说我的 CPU 时不时会突然飙升。不确定这是否相关,但我想把它包括进去。
答案1
如果 Apache 占用了所有可用内存,并且 Qmail 尝试分叉,则 Qmail 可能会崩溃,因为无法分配必要的内存。这可能会导致父进程也死亡。
从我过去的经验来看(这可能不适用于您的情况),Apache 中的高内存利用率也可能来自 Apache 运行的 PHP 或 CGI 脚本。检查 php.ini 中的最大内存使用量,看它是否设置为合理的值。请记住(据我回忆)php.ini 中的最大 64MB 是每个执行脚本 64MB,因此如果您有 10 个 Apache 线程,每个线程都运行使用最大内存的脚本,则可能会导致问题。
这里还有一些其他的 serverfault 帖子,其中包含一些有用的信息: