Apache MaxMemFree 不起作用?

Apache MaxMemFree 不起作用?

我在 httpd.conf 中将 apache MaxMemFree 设置为 150。但是,当我使用 htop/top 查看 apache 进程时,它仍然占用了 648M,如下所示。我遗漏了什么吗?

16514 apache     20   0 1157M  648M  7884 S  0.0  8.2  0:00.00 /usr/sbin/httpd
16546 apache     20   0 1157M  648M  7884 S  0.0  8.2  0:00.00 /usr/sbin/httpd
16513 apache     20   0 1157M  648M  7884 S  0.0  8.2  0:19.78 /usr/sbin/httpd
16524 apache     20   0 1124M  613M  7956 S  0.0  7.8  0:00.00 /usr/sbin/httpd
16544 apache     20   0 1124M  613M  7956 S  0.0  7.8  0:00.00 /usr/sbin/httpd
16520 apache     20   0 1124M  613M  7956 S  0.0  7.8  0:20.32 /usr/sbin/httpd
16524 apache     20   0 1122M  609M  7956 S  0.0  7.7  0:00.00 /usr/sbin/httpd
16544 apache     20   0 1122M  609M  7956 S  0.0  7.7  0:00.00 /usr/sbin/httpd

PS:我正在尝试排除 mod_perl 应用程序的故障,该应用程序可能存在一些内存泄漏。但是,我无法更改代码。我正在考虑让 apache 在一段时间后终止该进程以释放内存。

答案1

Linux 占用了你的内存——查看此页面了解 Linux 如何分配内存。

更新

除了明显找到应用程序中内存泄漏的根源并进行修复之外,请尝试以下操作:

  • 使用 cron 或脚本定期重新启动 httpd 以检查资源消耗。解析 Nagios 脚本或类似脚本的输出[check_httpd_limits][2]并将其用作检查。这不是一个好的长期选择。

  • 调整 apache httpd 实例。的输出check_httpd_limits在这方面可能会有所帮助。

  • 看着对照组看看您是否可以限制资源消耗。请做好准备,因为您的应用和服务器上的其他组件可能会对此做出“不利”反应。

您可能正在观察多种事物的组合。

相关内容