Apache線程數(shù)和超時(shí)設(shè)置
2015-10-16 16:49:24
14343
Apache的線程數(shù)控制文件為conf/exrtra/http-mpm.conf,需要在httpd.conf中將 Include conf/extra/httpd-mpm.conf前#去掉,以使得http-mpm.conf生效。
在Windows系統(tǒng)中,起作用的是Winnt mpm段,
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxRequestsPerChild 0
</IfModule>
缺省的配置一般夠用,但負(fù)荷大的網(wǎng)站就要修改了,否則網(wǎng)站一下就變慢或沒有響應(yīng)了。實(shí)際可以根據(jù)apache-status查看apache實(shí)時(shí)連接狀態(tài),我的服務(wù)器最后設(shè)置如下:
<IfModule mpm_winnt_module>
ThreadsPerChild 350
ThreadLimit 350
MaxRequestsPerChild 10000
Win32DisableAcceptEx
EnableMMAP Off
EnableSendfile Off
</IfModule>
其中ThreadLimit是占用系統(tǒng)線程數(shù)限制,最好加上,否則會(huì)產(chǎn)生內(nèi)存溢出導(dǎo)致Apache當(dāng)?shù)簟?/span>
MaxRequestsPerChild我理解是請(qǐng)求的緩存數(shù),太小了影響性能,占用cpu時(shí)間,太大了占用內(nèi)存資源,想象一下你網(wǎng)站的文件個(gè)數(shù),然后自己設(shè)定,只要不為0就可以,防止內(nèi)存溢出。
ThreadsPerChlid是apache的線程數(shù),就是開了這么多的線程來等待響應(yīng)客戶端請(qǐng)求,需要根據(jù)apache-status實(shí)時(shí)的監(jiān)控調(diào)節(jié),大了會(huì)占用過多內(nèi)存,小了會(huì)導(dǎo)致連接不上。而且應(yīng)該同時(shí)修改httpd-default.php超時(shí)設(shè)置來配合。
在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效。
其中調(diào)節(jié)以下參數(shù)
Timeout 15 (連接超時(shí)缺省為300,太大了,縮小會(huì)減少同時(shí)連接數(shù),即上面占用的實(shí)際線程數(shù))
KeepAlive On (開啟可以提高性能,因?yàn)橐粋€(gè)頁面一般會(huì)有多個(gè)請(qǐng)求)
MaxKeepAliveRequests 50 (這個(gè)數(shù)目自己根據(jù)網(wǎng)頁內(nèi)容調(diào)節(jié))
KeepAliveTimeout 5 (這個(gè)小于Timeout就行)