linux – 限制Apache 2内存使用

前端之家收集整理的这篇文章主要介绍了linux – 限制Apache 2内存使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行一个古老的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,它会告诉你.

猜你在找的Linux相关文章