Apache的最大鏈接數,默認爲256個。
修改apache的最大鏈接數,方法以下:
步驟一:先修改./apache/conf/httpd.conf文件。
# vi httpd.conf
將「#Include conf/extra/httpd-mpm.conf」前面的 # 去掉。
保存。
步驟二:再修改./apache/conf/extra/httpd-mpm.conf文件。
# vi httpd-mpm.conf
找到<IfModule mpm_prefork_module> 這一行
原:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
修改後
<IfModule mpm_prefork_module>
Apache的最大鏈接數,默認爲256個。
修改apache的最大鏈接數,方法以下:
步驟一:先修改./apache/conf/httpd.conf文件。
# vi httpd.conf
將「#Include conf/extra/httpd-mpm.conf」前面的 # 去掉。
保存。
步驟二:再修改./apache/conf/extra/httpd-mpm.conf文件。
# vi httpd-mpm.conf
找到<IfModule mpm_prefork_module> 這一行
原:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
修改後
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 1500
MaxClients 1000
MaxRequestsPerChild 0
注意:一、必定要加ServerLimit,而且要在MaxClients前面,且數值要比MaxClient的值大;
二、重啓apache,僅僅/bin/apachectl restart無效,
須要先apachectl stop 而後再apachectl startlinux
對apache中併發控制參數prefork理解和調優apache
一個apache有linux下的併發不是很高的,大約到3K的樣子,普通的服務器都會不一樣程度的出現問題.apache有關併發控制主要是prefork和worker二個其中一個來控制.咱們可使用httpd -l來肯定當前使用的MPM是prefork.c,仍是Worker.c.下面是apache中有關prefork的配置.下面是我優化過的參數.服務器
<IfModule prefork.c>併發
#有這個參數就沒必要像apache1同樣修改源碼才能修改256客戶數的限制,聽講要放到最前面纔會生效,2000是這個參數的最大值
ServerLimit 2000
#指定服務器啓動時創建的子進程數量,prefork默認爲5。
StartServers 25ide
#指定空閒子進程的最小數量,默認爲5。若是當前空閒子進程數少於MinSpareServers ,那麼Apache將以最大每秒一個的速度產生新的子進程。此參數不要設的太大。
MinSpareServers 25優化
#設置空閒子進程的最大數量,默認爲10。若是當前有超過MaxSpareServers數量的空閒子進程,那麼父進程將殺死多餘的子進程。此參數不要設的太大。若是你將該指令的值設置爲比MinSpareServers小,Apache將會自動將其修改爲"MinSpareServers+1"。
MaxSpareServers 50spa
#限定同一時間客戶端最大接入請求的數量(單個進程併發線程數),默認爲256。任何超過MaxClients限制的請求都將進入等候隊列,一旦一個連接被釋放,隊列中的請求將獲得服務。要增大這個值,你必須同時增大ServerLimit 。
MaxClients 2000線程
#每一個子進程在其生存期內容許伺服的最大請求數量,默認爲10000.到達MaxRequestsPerChild的限制後,子進程將會結束。若是MaxRequestsPerChild爲"0",子進程將永遠不會結束。
MaxRequestsPerChild 10000rest
</IfModule>隊列
將MaxRequestsPerChild設置成非零值有兩個好處:
1.能夠防止(偶然的)內存泄漏無限進行,從而耗盡內存。
2.給進程一個有限壽命,從而有助於當服務器負載減輕的時候減小活動進程的數量。
工做方式:
一個單獨的控制進程(父進程)負責產生子進程,這些子進程用於監聽請求並做出應答。Apache老是試圖保持一些備用的 (spare)或者是空閒的子進程用於迎接即將到來的請求。這樣客戶端就不須要在獲得服務前等候子進程的產生。在Unix系統中,父進程一般以root身份運行以便邦定80端口,而 Apache產生的子進程一般以一個低特權的用戶運行。User和Group指令用於設置子進程的低特權用戶。運行子進程的用戶必需要對它所服務的內容有讀取的權限,可是對服務內容以外的其餘資源必須擁有儘量少的權限。
咱們調優經常要查看httpd進程數(即prefork模式下Apache可以處理的併發請求數):
#ps -ef | grep httpd | wc -l
出現的結果,就是當前Apache可以處理的多少個併發請求,這個值Apache根據負載狀況自動調.
查看Apache的併發請求數及其TCP鏈接狀態:
狀態:描述CLOSED:無鏈接是活動的或正在進行LISTEN:服務器在等待進入呼叫SYN_RECV:一個鏈接請求已經到達,等待確認SYN_SENT:應用已經開始,打開一個鏈接ESTABLISHED:正常數據傳輸狀態FIN_WAIT1:應用說它已經完成FIN_WAIT2:另外一邊已贊成釋放ITMED_WAIT:等待全部分組死掉CLOSING:兩邊同時嘗試關閉TIME_WAIT:另外一邊已初始化一個釋放 處理完畢,等待超時結束LAST_ACK:等待全部分組死掉