监控 CentOS 上的 RAM 使用情况并在达到特定使用量时重新启动 Apache

监控 CentOS 上的 RAM 使用情况并在达到特定使用量时重新启动 Apache

我正在运行带有基本 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

相关内容