我正在运行一个古老的Blue& amp;业余爱好网络服务器.白色G3 / 300运行Debian PPC Squeeze 2.6.30.重启后,性能可以暂时保持一段时间,但最终会越来越陷入困境.现在它处于76天的正常运行时间,主要的罪魁祸首似乎是10个apache2进程的内存使用量.
我想我需要降低StartServers,MinSpareServers和/或MaxSpareServers的值,但我不确定要调整哪一个,并且每个部分有三个部分,具体取决于正在使用的mpm模块.
我怎么知道我需要改变以下哪些部分,以及这个盒子有448 MB的物理内存(每个64,128和256支的奇怪的升级历史)有什么合理的值?
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_worker_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_event_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
我的apache2.conf中没有任何其他StartServers实例,但这些mpm模块都没有出现在mods-available或mods-enabled中.想法?
谢谢!
解决方法
如今,400MB对于Web服务器并不多 – 您可能需要考虑更换框:)
也就是说,如果你的内存使用量在膨胀,你可能会在某处出现内存泄漏 – 为了快速测试一下httpd进程的大小,然后停止/启动Apache&看看它们是否小得多.如果他们看了几天,看看他们是否成长.
如果是内存泄漏,真正的解决方案是找到并修复内存泄漏,但由于这通常是一个痛苦,你也可以将MaxRequestsPerChild调整为0以外的其他值(无限制).当他们为一定数量的请求提供服务时,这会扼杀Apache工作人员(迫使他们在此过程中放弃他们泄露的内存.
从较大的值(大约数千个)开始,然后逐步减少到数百个.如果每个孩子的请求低于100,那么你的内存泄漏大到足以保证实际修复它,因为不断杀戮和重新产生apache工作人员的性能会很重要.
Re:哪个mpm要调整,答案几乎肯定是prefork.你可以运行httpd -V并查找Server MPM:line,它会告诉你.