我在 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
在这方面可能会有所帮助。看着对照组看看您是否可以限制资源消耗。请做好准备,因为您的应用和服务器上的其他组件可能会对此做出“不利”反应。
您可能正在观察多种事物的组合。