![监控 CentOS 上的 RAM 使用情况并在达到特定使用量时重新启动 Apache](https://linux22.com/image/513559/%E7%9B%91%E6%8E%A7%20CentOS%20%E4%B8%8A%E7%9A%84%20RAM%20%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%E5%B9%B6%E5%9C%A8%E8%BE%BE%E5%88%B0%E7%89%B9%E5%AE%9A%E4%BD%BF%E7%94%A8%E9%87%8F%E6%97%B6%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%20Apache.png)
我正在运行带有基本 LAMP 堆栈的 CentOS 5.3 服务器。我已经优化了 LAMP 和我的代码以尽可能高效地运行,但 Apache 的某个地方存在内存泄漏,导致我的服务器每小时左右都会终止运行。编写脚本来监控内存使用情况的最佳方法是什么?如果内存使用量达到峰值(例如 450MB),则终止所有 Apache 进程并重新启动 Apache。我了解 C++/PHP 和基本的 Linux 服务器管理,但我不熟悉 Perl 或 bash 脚本。不过,我愿意学习任何解决方案,作为在找到问题之前的一个临时解决方案。
答案1
监控是一款简单的服务器监控实用程序,可以执行此类操作。
答案2
尝试在 Apache 中设置MaxRequestsPerChild
变量,这将导致其子进程在处理了指定数量的请求后终止并启动它们。在 mod_php 中,该值可以低至 100。
众所周知,PHP(尤其是 mod_php)会这样做。其他方法包括在 FastCGI 下运行 PHP,这样可以防止 Apache 重新启动,而只重新启动 PHP 解释器。
你还应该确保始终有可用的 RAM。如果这意味着运行更少的 Apache 分支,那就这样吧。限制ServerLimit