Apache服務(wù)器配合PHP日趨成為當(dāng)前網(wǎng)站架設(shè)的主流應(yīng)用,但是在國(guó)內(nèi)Linux系統(tǒng)畢竟沒有Windows系統(tǒng)應(yīng)用的多,因此飄易整理下在windows系統(tǒng)下如何優(yōu)化apache的性能。
<IfModule mpm_winnt_module>
ThreadsPerChild 150 MaxRequestsPerChild 0 </IfModule> 以上是缺省的配置,一般情況下夠用了,但負(fù)荷較大的網(wǎng)站就需要修改了,否則訪問網(wǎng)站會(huì)變慢或沒有響應(yīng)。實(shí)際設(shè)置中可以根據(jù)apache-status查看apache實(shí)時(shí)連接狀態(tài),查看其中線程占用數(shù)目情況來(lái)進(jìn)行相應(yīng)的調(diào)整,我的服務(wù)器最后設(shè)置如下:
其中ThreadLimit是占用系統(tǒng)線程數(shù)限制,修改后會(huì)在apache-status中直接看到效果,就是對(duì)應(yīng)的最大的可用線程數(shù)(如下所示):1 requests currently being processed, 349 idle workers 對(duì)于mpm_winnt,ThreadLimit的默認(rèn)值是1920;對(duì)于其他mpM這個(gè)值是64。 注意:Apache在編譯時(shí)內(nèi)部有一個(gè)硬性的限制"ThreadLimit 20000"(對(duì)于mpm_winnt是"ThreadLimit 15000"),你不能超越這個(gè)限制。
該參數(shù)需要根據(jù) apache-status實(shí)時(shí)的監(jiān)控情況來(lái)調(diào)節(jié),太大會(huì)導(dǎo)致內(nèi)存增長(zhǎng)過快,直到服務(wù)器當(dāng)機(jī),太小會(huì)導(dǎo)致服務(wù)器連接隊(duì)列在高峰期時(shí)占滿,從而導(dǎo)致網(wǎng)站連接 慢。同時(shí)我們應(yīng)該修改另一個(gè)配置文件httpd-default.php中的超時(shí)設(shè)置來(lái)配合這個(gè)參數(shù)。 對(duì)于mpm_winnt,ThreadsPerChild的默認(rèn)值是64;對(duì)于其他mpM是25。
MaxRequestsPerChild指令設(shè)置每個(gè)子進(jìn)程在其生存期內(nèi)允許伺服的最大請(qǐng)求數(shù)量。到達(dá)MaxRequestsPerChild的限制后,子進(jìn)程將會(huì)結(jié)束。如果MaxRequestsPerChild為"0",子進(jìn)程將永遠(yuǎn)不會(huì)結(jié)束。 在mpm_netware和mpm_winnt上的默認(rèn)值是"0"。 將MaxRequestsPerChild設(shè)置成非零值有兩個(gè)好處: a)可以防止(偶然的)內(nèi)存泄漏無(wú)限進(jìn)行,從而耗盡內(nèi)存。 b)給進(jìn)程一個(gè)有限壽命,從而有助于當(dāng)服務(wù)器負(fù)載減輕的時(shí)候減少活動(dòng)進(jìn)程的數(shù)量。 注意:對(duì)于KeepAlive鏈接,只有第一個(gè)請(qǐng)求會(huì)被計(jì)數(shù)。事實(shí)上,它改變了每個(gè)子進(jìn)程限制最大鏈接數(shù)量的行為。
該參數(shù)為連接超時(shí),缺省的300秒顯然太大,縮小該參數(shù)就會(huì)減少同時(shí)連接數(shù),即用戶實(shí)際占用的線程數(shù),這樣就可以起到配合上面ThreadsPerChlid參數(shù)的作用。
該參數(shù)為是否保持活連接,目前網(wǎng)站中一個(gè)頁(yè)面一般會(huì)包含多個(gè)文件,所以相應(yīng)用戶訪問時(shí)會(huì)有多個(gè)請(qǐng)求,因此開啟可以提高服務(wù)器性能。
該參數(shù)為最大的活連接請(qǐng)求數(shù),可以根據(jù)網(wǎng)頁(yè)實(shí)際包含的文件數(shù)目自行調(diào)節(jié)。
該參數(shù)為活連接的超時(shí)時(shí)間,一般只要設(shè)置成小于Timeout即可。
首先,apache的重新啟動(dòng)。
開始>>程序>>附件>>管理工具>>任務(wù)計(jì)劃 添加任務(wù)計(jì)劃>>下一步>>apache restart>>選擇時(shí)間(可以設(shè)置的為每天凌晨2-4點(diǎn))>>一路確定即可。
(附加說明:上面的apache2與mysql為服務(wù)名稱。)
這樣每天早晨4點(diǎn)系統(tǒng)就會(huì)自動(dòng)重啟apache與mysql (附加說明:04:00為重啟時(shí)間,c:autostartserver.bat為第一步的bat文件地址)
把 LoadModule status_module modules/mod_status.so 這句加上,如果前面有帶#號(hào),開啟的話,需要將#去除,并加入: 這是一個(gè)完整的server-status的配置。 配置完成,重新啟動(dòng)apache即可(注意,不能直接restart,而要先stop,再start)
http://localhostm/server-status?refresh=N將表示訪問狀態(tài)頁(yè)面可以每N秒自動(dòng)刷新一次; Deny from表示禁止的訪問地址; Allow from表示允許的地址訪問; ExtendedStatus On 表示的是待會(huì)訪問的時(shí)候能看到詳細(xì)的請(qǐng)求信息,另外該設(shè)置僅能用于全局設(shè)置,不能在特定的虛擬主機(jī)中打開或關(guān)閉。啟用擴(kuò)展?fàn)顟B(tài)信息將會(huì)導(dǎo)致服務(wù)器運(yùn)行效率降低。 |
2006-2014 IT0355.com 山西中聯(lián)科創(chuàng)科技有限公司. All Rights Reserved.
電話:0355-3728808 傳真:0355-3728808
ICP備案號(hào):晉ICP備06003721號(hào)本站已通過國(guó)際W3C認(rèn)證
關(guān)鍵字:中聯(lián)科創(chuàng),長(zhǎng)治網(wǎng)站建設(shè),長(zhǎng)治網(wǎng)站推廣,長(zhǎng)治網(wǎng)絡(luò)工程,長(zhǎng)治軟件開發(fā),山西網(wǎng)站建設(shè),山西軟件開發(fā) 長(zhǎng)治五金網(wǎng)