Apache线程数和超时设置

2015-10-16 16:49:24 15414

Apache的线程数控制文件为conf/exrtra/http-mpm.conf,需要在httpd.conf中将 Include conf/extra/httpd-mpm.conf#去掉,以使得http-mpm.conf生效。

   Windows系统中,起作用的是Winnt mpm段,

<IfModule mpm_winnt_module>

    ThreadsPerChild      150

    MaxRequestsPerChild    0

</IfModule>

     缺省的配置一般够用,但负荷大的网站就要修改了,否则网站一下就变慢或没有响应了。实际可以根据apache-status查看apache实时连接状态,我的服务器最后设置如下:

<IfModule mpm_winnt_module>

    ThreadsPerChild    350

    ThreadLimit     350

    MaxRequestsPerChild    10000

Win32DisableAcceptEx

EnableMMAP Off

EnableSendfile Off

</IfModule>

    其中ThreadLimit是占用系统线程数限制,最好加上,否则会产生内存溢出导致Apache当掉。

    MaxRequestsPerChild我理解是请求的缓存数,太小了影响性能,占用cpu时间,太大了占用内存资源,想象一下你网站的文件个数,然后自己设定,只要不为0就可以,防止内存溢出。

    ThreadsPerChlidapache的线程数,就是开了这么多的线程来等待响应客户端请求,需要根据apache-status实时的监控调节,大了会占用过多内存,小了会导致连接不上。而且应该同时修改httpd-default.php超时设置来配合。

    httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效。

其中调节以下参数

Timeout 15 (连接超时缺省为300,太大了,缩小会减少同时连接数,即上面占用的实际线程数)

KeepAlive On (开启可以提高性能,因为一个页面一般会有多个请求)

MaxKeepAliveRequests 50 (这个数目自己根据网页内容调节)

KeepAliveTimeout 5 (这个小于Timeout就行)

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: