佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > apache中并發(fā)控制參數(shù)prefork理解和調(diào)優(yōu)

apache中并發(fā)控制參數(shù)prefork理解和調(diào)優(yōu)

熱門標(biāo)簽:記事本 外呼系統(tǒng) 分布式呼叫中心 客服熱線 回?fù)芟到y(tǒng) 客戶服務(wù) 電銷行業(yè) 銀行業(yè)務(wù)
一個apache有l(wèi)inux下的并發(fā)不是很高的,大約到3K的樣子,普通的服務(wù)器都會不同程度的出現(xiàn)問題.apache有關(guān)并發(fā)控制主要是 prefork和worker二個其中一個來控制.我們可以使用httpd -l來確定當(dāng)前使用的MPM是prefork.c,還是Worker.c.下面是apache中有關(guān)prefork的配置.下面是我優(yōu)化過的參數(shù).
IfModule prefork.c>
#有這個參數(shù)就不必像apache1一樣修改源碼才能修改256客戶數(shù)的限制,聽講要放到最前面才會生效,2000是這個參數(shù)的最大值
ServerLimit 2000
#指定服務(wù)器啟動時建立的子進(jìn)程數(shù)量,prefork默認(rèn)為5。
StartServers 25
#指定空閑子進(jìn)程的最小數(shù)量,默認(rèn)為5。如果當(dāng)前空閑子進(jìn)程數(shù)少于MinSpareServers ,那么Apache將以最大每秒一個的速度產(chǎn)生新的子進(jìn)程。此參數(shù)不要設(shè)的太大。
MinSpareServers 25
#設(shè)置空閑子進(jìn)程的最大數(shù)量,默認(rèn)為10。如果當(dāng)前有超過MaxSpareServers數(shù)量的空閑子進(jìn)程,那么父進(jìn)程將殺死多余的子進(jìn)程。此參數(shù) 不要設(shè)的太大。如果你將該指令的值設(shè)置為比MinSpareServers小,Apache將會自動將其修改成"MinSpareServers+1"。
MaxSpareServers 50
#限定同一時間客戶端最大接入請求的數(shù)量(單個進(jìn)程并發(fā)線程數(shù)),默認(rèn)為256。任何超過MaxClients限制的請求都將進(jìn)入等候隊列,一旦一個鏈接被釋放,隊列中的請求將得到服務(wù)。要增大這個值,你必須同時增大ServerLimit 。
MaxClients 2000
#每個子進(jìn)程在其生存期內(nèi)允許伺服的最大請求數(shù)量,默認(rèn)為10000.到達(dá)MaxRequestsPerChild的限制后,子進(jìn)程將會結(jié)束。如果MaxRequestsPerChild為"0",子進(jìn)程將永遠(yuǎn)不會結(jié)束。
MaxRequestsPerChild 10000
/IfModule>
將MaxRequestsPerChild設(shè)置成非零值有兩個好處:
1.可以防止(偶然的)內(nèi)存泄漏無限進(jìn)行,從而耗盡內(nèi)存。
2.給進(jìn)程一個有限壽命,從而有助于當(dāng)服務(wù)器負(fù)載減輕的時候減少活動進(jìn)程的數(shù)量。
工作方式:
一個單獨(dú)的控制進(jìn)程(父進(jìn)程)負(fù)責(zé)產(chǎn)生子進(jìn)程,這些子進(jìn)程用于監(jiān)聽請求并作出應(yīng)答。Apache總是試圖保持一些備用的 (spare)或者是空閑的子進(jìn)程用于迎接即將到來的請求。這樣客戶端就不需要在得到服務(wù)前等候子進(jìn)程的產(chǎn)生。在Unix系統(tǒng)中,父進(jìn)程通常以root身 份運(yùn)行以便邦定80端口,而 Apache產(chǎn)生的子進(jìn)程通常以一個低特權(quán)的用戶運(yùn)行。User和Group指令用于設(shè)置子進(jìn)程的低特權(quán)用戶。運(yùn)行子進(jìn)程的用戶必須要對它所服務(wù)的內(nèi)容有 讀取的權(quán)限,但是對服務(wù)內(nèi)容之外的其他資源必須擁有盡可能少的權(quán)限。
我們調(diào)優(yōu)常常要查看httpd進(jìn)程數(shù)(即prefork模式下Apache能夠處理的并發(fā)請求數(shù)):
#ps -ef | grep httpd | wc -l
出現(xiàn)的結(jié)果,就是當(dāng)前Apache能夠處理的多少個并發(fā)請求,這個值A(chǔ)pache根據(jù)負(fù)載情況自動調(diào).
查看Apache的并發(fā)請求數(shù)及其TCP連接狀態(tài):
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
上面這句來自己我一個新浪的朋友張宴.
返回結(jié)果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請求數(shù);ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);TIME_WAIT表示處理完畢,等待超時結(jié)束的請求數(shù)。
狀態(tài):描述
CLOSED:無連接是活動的或正在進(jìn)行
LISTEN:服務(wù)器在等待進(jìn)入呼叫
SYN_RECV:一個連接請求已經(jīng)到達(dá),等待確認(rèn)
SYN_SENT:應(yīng)用已經(jīng)開始,打開一個連接
ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài)
FIN_WAIT1:應(yīng)用說它已經(jīng)完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關(guān)閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
可以使用Linux下的webbench來作壓力測試.

標(biāo)簽:阿里 綿陽 阜陽 拉薩 德州 公主嶺 廣東 濱州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《apache中并發(fā)控制參數(shù)prefork理解和調(diào)優(yōu)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    民勤县| 聂拉木县| 西宁市| 易门县| 泽州县| 禄丰县| 嘉荫县| 肇庆市| 六枝特区| 石家庄市| 西青区| 城市| 女性| 恩平市| 福泉市| 呼玛县| 志丹县| 梁山县| 佛冈县| 绩溪县| 永川市| 苏尼特左旗| 吉木萨尔县| 福安市| 佛冈县| 西昌市| 屏东市| 陵川县| 湘阴县| 织金县| 高要市| 石阡县| 绥宁县| 安庆市| 泾川县| 平阴县| 永丰县| 武夷山市| 区。| 黄浦区| 华蓥市|