:::

7-1 Prefork 模式

prefork模式是古老穩定的模式。Apache在啟動之初,就預先產生一些子進程,然後等待請求進來,以減少頻繁創建和銷毀進程的開銷。每個子進程只有一個線程,在一個時間點內,只能處理一個請求。

  • 優點:成熟穩定,兼容所有新老模塊。同時,不需要擔心線程安全的問題。
  • 缺點:一個進程相對佔用更多的系統資源,消耗更多的記憶體。而且,它並不擅長處理高並發請求,在這種場景下,它會將請求放進隊列中,一直等到有可用進程,請求才會被處理。
  1. 編輯mpm_prefork設定檔
    vi /etc/apache2/mods-available/mpm_prefork.conf
  2. 建議內容如下:
    <IfModule mpm_prefork_module>
            StartServers            5
            MinSpareServers         5
            MaxSpareServers         10
            ServerLimit             1000
            MaxRequestWorkers       750
            MaxConnectionsPerChild  3000
    </IfModule>
    • StartServers:一開始建立的子進程數#推薦設置:小=默認 中=20~50 大=50~100
    • MinSpareServers:最小數量的服務器進程,保存備用(達此數就不再主動建立新的進程,如果站點負載較大,可加大此值)推薦設置:與StartServers保持一致
    • MaxSpareServers:最大數量的服務器進程,保存備用(空閒進程數大於此值時,Apache會自動kill掉一些多餘進程。故不要設得過大,如果站點負載較大,可加大此值)#推薦設置:小=20 中=30~80 大=80~120
    • MaxRequestWorkers:最為重要的一個, Apache可以同時處理的請求數,是對Apache性能影響最大的參數。舊名MaxClients ,若連接數(ps -ef|grep apache2|wc -l)大於此值時,就會開始排隊#推薦設置:小=500 中=500~1500 大型=1500~3000( 如果最大請求進程數超過256需要在MaxRequestWorkers參數前添加參數ServerLimit並且定最大並發數,該參數最好與MaxRequestWorkers的值保持一致。
    • MaxConnectionsPerChild:設置的是每個子進程可處理的請求數(0意味著子進程永不銷毀,但不建議,舊名MaxRequestsPerChild )#推薦設置:小=10000 中或大=10000~500000
  3. 儲存後,重啟 Apache
    service apache2 restart
  4. 修改核心參數,解決WAIT_TIME過多問題:
    vi /etc/sysctl.conf
  5. 加入以下四行:
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30

整理自https://www.jianshu.com/p/1e7273aa129f


:::

書籍目錄

展開 | 闔起

http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D15%26tbdsn%3D1349

計數器

今天: 2983298329832983
昨天: 3438343834383438
總計: 7393312739331273933127393312739331273933127393312