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