1、什麼是mpm?
multi-processing module (mpm) implements a hybrid multi-process multi-threaded server。(多程序、多執行緒)
2、有多少種mpm?
大致有:prefork mpm、worker mpm、beos mpm、netware mpm、os/2 mpm、winnt mpm。
3、怎麼知道apache當前用的是哪個mpm?
linux及windows下都可以使用命令:「httpd -l 」 進行查詢。
4、各個mpm是怎麼工作及如何優化?
(1)prefork mpm
startservers 10
minspareservers 10
maxspareservers 15
serverlimit 2000
maxclients 1000
maxrequestsperchild 10000
啟動時建立startservers個子程序,
然後按每秒建立指數級個程序直到達到minspareservers個程序(最多增到每秒32個),
如果空閒程序數大於maxspareservers,則檢查kill掉一些空閒程序。
maxrequestperchild指定每個程序處理了多少個請求後就自我毀滅。
maxclients指定apache最多可以同時處理的請求數,也就是程序數?
maxclients預設不能大於256,可以通過設定serverlimit來增大這個限制數,最大20000?
(2)worker:
startservers 3
maxclients 2000
serverlimit 25
threadlimit 200
threadsperchild 100
minsparethreads 50
maxsparethreads 200
maxrequestsperchild 0
啟動時建立startservers個子程序,
每個程序包含threadsperchild個執行緒,預設最大64
minsparethreads定義最小的空閒執行緒數,最大75
maxsparethreads定義最大的空閒執行緒數,超過則執行清理?最大250
maxclients定義所有子程序中的執行緒總數
threadlimit,最大20000,預設64
serverlimit,最大值20000,預設16
需要注意的是,如果顯式宣告了serverlimit,那麼它乘以threadsperchild的值必須大於等於maxclients,而且 maxclients必須是threadsperchild的整數倍,否則apache將會自動調節到乙個相應值(可能是個非期望值)。
(3)winnt mpm:
threadsperchild 500
maxrequestsperchild 10000
mpm_winnt.c是專門針對windows nt優化的mpm(多路處理模組),它使用乙個單獨的父程序產生乙個單獨的子程序,在這個子程序中輪流產生多個執行緒來處理請求。也就是說 mpm_winnt只能啟動父子兩個程序, 不能像linux下那樣同時啟動多個程序。
threadlimit,預設1920,最大15000,限制單個程序的執行緒總數。
Apache 高併發之 MPM 調優比較詳細
1 什麼是mpm?multi processing module mpm implements a hybrid multi process multi threaded server。多程序 多執行緒 2 有多少種mpm?大致有 prefork mpm worker mpm beos mpm ne...
apache負載調優
apache負載調優 watch n 1 d pgrep httpd wc l apache動態檢視連線數 ps aux grep httpd wc l ps aux grep v grep awk httpd end 檢視apache占用記憶體平均數 vim etc sysctl.conf 編輯檔...
Apache調優及配置
keepalivetimeout 5 持續作用中伺服器在兩次請求之間等待的時間數 maxkeepaliverequests 3000 乙個長連線中允許的最高請求數量 minspareservers 5 自己翻譯 充許最小的空閒程序 maxspareservers 10 自己翻譯 充許最大的空閒程序 ...