Apache prefork优化-选择正确的`MaxRequestsPerChild`值


9

我正在尝试优化我们的Web服务器,以处理尽可能多的连接。我读了许多帖子和Apache注释。我试图了解应该选择哪个值MaxRequestsPerChild

最初,我尝试将其设置为4,000,但是服务器在处理许多请求时遇到了困难,因此我开始提高它。目前,我的设置是:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

将设置MaxRequestsPerChild为40,000后,服务器设法处理更多的连接,同时不使用更多的内存/ cpu。

谁能告诉我这个值是否太高还是可以得到这么高的值?

谢谢!

操作系统信息:

[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
             total       used       free     shared    buffers     cached
Mem:       3814660    3502968     311692          0     144368    2970468
-/+ buffers/cache:     388132    3426528
Swap:      5210104          0    5210104

Answers:


10

MaxRequestsPerChild实际上,它仅在限制运行动态脚本时随时间限制内存泄漏量时才有用。如果您只提供静态内容或非常小/简单的脚本,则可以将其设置为0或非常高而没有太大影响。如果您正在运行较大/复杂的脚本,则将其设置为0 / high将导致您的Apache进程占用越来越多的内存。究竟还有多少取决于您的特定应用程序。

另一方面,将其设置得很低实际上可能会导致CPU使用率略高,因为Apache进程会不断重启。

我将做一个简单的测试,看看您的进程可以使用多少内存。设置MaxRequestsPerChild为0并重新启动Apache。测试加载几页,看看Apache进程的初始大小是多少top。在数小时/天/周(取决于您的应用程序和页面浏览量)后,再次检查,以查看其增长情况。如果它没有增长太多,那么0或非常大的值MaxRequestsPerChild应该很好。

如果您为Apache进程设置了最大大小(即,您希望它们的大小为50MB或更小),则可以使用的各种值进行相同的测试,MaxRequestsPerChild直到找到一个使Apache小于此值的值。


1
如何使用Windows Server测试加载页面并查看Apache进程的大小?
艾哈迈德·阿尔菲
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.