完全不直观的 Apache/PHP 内存释放行为

完全不直观的 Apache/PHP 内存释放行为

好吧,这个有点奇怪。我有一台 Turnkey Linux 服务器,配有 1GB 的专用 RAM。它运行的是 WP3.2,带有大量插件。这是一个新网站,因此流量非常有限(除了搜索引擎,每周大概有 20 次点击)。

现在,几个星期以来,每隔几天,它就会占用最大主内存,开始消耗虚拟内存,然后崩溃。这种情况已经持续了一段时间,我一直在试图找出导致崩溃的因素。

九天前,我将外部服务器监视器指向了这台服务器。我编写了一个 5 行 HTML 文件(不是 PHP 也不是 WP),服务器监视器每分钟都会访问该文件,以查看服务器是否正常运行。

所以,现在,九天过去了,服务器一直很稳定,一直运行,没有内存泄漏。我没有对服务器本身进行任何更改,就看到了这种行为的变化。

您见过这样的情况吗?服务器监视器所做的只是检索单个、非常简单的 HTML 文件,所有内存泄漏问题都消失了。

很奇怪吧?

答案1

每个子进程的最大请求数是关键。

每分钟请求一次简单页面可减少线程在其生命周期内提供的导致泄漏的页面数量。

这意味着每个进程都会达到其最大值,并且在泄漏过多内存之前被终止。

您应该减少 MaxRequestsPerChild(在 httpd.conf 中),而不是依赖监控脚本发出无害的请求,直到您找到并修复内存泄漏。

相关内容