Apache 优化 - prefork MPM

Apache 优化 - prefork MPM

我阅读了许多关于 Apache 配置的帖子,并尝试找到最适合我们服务器的值。为了确保最佳值,我使用了JMeter模拟每秒 2100 个连接。经过多轮微调后,我得到了以下配置:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   10
ServerLimit     2048
MaxClients       2048
MaxRequestsPerChild  20000
</IfModule>

服务器详细信息:

[root@web06 ~]# free
                 total       used       free     shared    buffers     cached
    Mem:       3814660    1070152    2744508          0     146788     766944
    -/+ buffers/cache:     156420    3658240
    Swap:      5210104          0    5210104
[root@web06 ~]# grep -c processor /proc/cpuinfo
4
[root@web06 ~]# uname --a
Linux web06 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux

单个 Apache 进程使用的内存:

[root@web06 ~]#  cat /proc/5903/status  | grep VmRSS 
VmRSS:     10076 kB

我知道我的配置有点高,但该配置在压力测试中给了我最好的结果。我很感激您的意见,我应该改变什么吗?

请注意 - 我知道有比 Apache 更好的替代品,但目前我没有资源进行这种改变。

谢谢!

答案1

那么,您的服务器是否能够运行 2048 个并发 Apache 进程(如您在 ServerLimit/MaxClients 中设置的)?我敢打赌它不能,实际上您不需要这么多并发 Apache 工作进程。我强烈建议您设置一个异步反向代理,nginx或者lighttpd将处理慢速连接的客户端卸载到该异步代理。相信我,大多数公共 Web 客户端的速度都很慢,以至于占用了 Apache 工作进程的大部分时间来处理已生成的内容上传到它们。如果您正确设置了反向代理,我认为您永远不需要超过 25 个并发 Apache 工作进程。

相关内容