我使用基本的LAMP堆栈运行CentOS 5.3服务器。 我已经优化了LAMP和我的代码以尽可能高效地运行,但是Apache每隔一小时左右就会有一处内存泄漏,导致我的服务器死亡。 编写一个监视内存使用情况的脚本的最佳方法是什么,如果它达到450MB,则会终止所有Apache进程并重新启动Apache。 我知道C ++ / PHP和基本的Linux服务器pipe理,但我不熟悉Perl或bash脚本。 尽pipe如此,作为一个临时的解决scheme,我仍然可以开始学习任何解决scheme。
Monit是一个简单的服务器监控工具,可以做这种事情。
尝试在Apache中设置MaxRequestsPerChildvariables,这将导致它在服务了指定数目的请求之后终止并启动其子项。 在mod_php中,这可以低至100。
PHP(特别是mod_php)已经知道这样做了。 替代方法包括在FastCGI下运行PHP,这将阻止Apache重新启动,只重新启动PHP解释器。
你也应该确保你总是有可用的RAM。 如果这意味着更less的Apache叉正在运行,那就这样吧。 限制在ServerLimit