我在运行 Debian PPC Squeeze 2.6.30 的古老 Blue & White G3/300 上运行一个业余爱好网络服务器。重新启动后一段时间性能还可以,但最终越来越陷入困境。现在正常运行时间为 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>
Run Code Online (Sandbox Code Playgroud)
在我的 apache2.conf 中没有任何其他 StartServers 实例,但是这些 mpm 模块都没有出现在mods-available或 中mods-enabled。想法?
谢谢!
现在 400MB 对于 Web 服务器来说并不多——您可能需要考虑更换盒子 :)
也就是说,如果您的内存使用量激增,您可能在某处存在内存泄漏——为了快速测试一下现在 httpd 进程的大小,然后停止/启动 Apache 并查看它们是否小得多。如果他们观察它们几天,看看它们是否长大。
如果是内存泄漏,真正的解决方案是找到并修复内存泄漏,但由于这通常很麻烦,您也可以调整MaxRequestsPerChild为 0 以外的值(无限制)。当 Apache 工作人员为固定数量的请求提供服务时,这将杀死 Apache 工作人员(迫使他们放弃在此过程中泄漏的内存。
从较大的值(数千个左右)开始,然后逐步减小到数百个。如果每个孩子的请求数低于 100 个,则您的内存泄漏足以保证实际修复它,因为不断杀死和重新生成 apache worker 对性能的影响将是显着的。
Re: 调整哪个mpm,答案几乎是肯定的prefork。
您可以运行httpd -V并寻找可以Server MPM:肯定地告诉您的行。
| 归档时间: |
|
| 查看次数: |
34731 次 |
| 最近记录: |