Apache里的 MPM 調優比較詳細


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
        <IfModule mpm_prefork_module>
            StartServers                10
            MinSpareServers        10
            MaxSpareServers        15
            ServerLimit                  2000
            MaxClients                   1000
            MaxRequestsPerChild 10000
        </IfModule>
        啟動時建立StartServers個子進程,
        然后按每秒創建指數級個進程直到達到MinSpareServers個進程(最多增到每秒32個),
        如果空閑進程數大於MaxSpareServers,則檢查kill掉一些空閑進程。
        MaxRequestPerChild指定每個進程處理了多少個請求后就自我毀滅。
        MaxClients指定apache最多可以同時處理的請求數,也就是進程數?
        MaxClients默認不能大於256,可以通過設定ServerLimit來增大這個限制數,最大20000?

(2)worker:
        <IfModule mpm_worker_module>
            StartServers                  3
            MaxClients                     2000
            ServerLimit                    25
            ThreadLimit                   200
            ThreadsPerChild            100
            MinSpareThreads         50
            MaxSpareThreads        200
            MaxRequestsPerChild   0
        </IfModule>
        啟動時建立StartServers個子進程,
        每個進程包含ThreadsPerChild個線程,缺省最大64
        MinSpareThreads定義最小的空閑線程數,最大75
        MaxSpareThreads定義最大的空閑線程數,超過則執行清理?最大250
        MaxClients定義所有子進程中的線程總數
        ThreadLimit,最大20000,默認64
        ServerLimit,最大值20000,默認16
        需要注意的是,如果顯式聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大於等於MaxClients,而且 MaxClients必須是ThreadsPerChild的整數倍,否則Apache將會自動調節到一個相應值(可能是個非期望值)。

(3)WinNT MPM:
        <IfModule mpm_winnt_module>
            ThreadsPerChild         500
            MaxRequestsPerChild 10000
        </IfModule>
        mpm_winnt.c是專門針對Windows NT優化的MPM(多路處理模塊),它使用一個單獨的父進程產生一個單獨的子進程,在這個子進程中輪流產生多個線程來處理請求。也就是說 mpm_winnt只能啟動父子兩個進程, 不能像Linux下那樣同時啟動多個進程。
ThreadLimit,默認1920,最大15000,限制單個進程的線程總數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM