[精讚] [會員登入]
1939

Apache Worker MPM =worker 調整參數

Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式 簡稱: MPM)

分享此文連結 //n.sfs.tw/15558

分享連結 Apache Worker MPM =worker 調整參數@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
最後編修
2022-01-06 14:56:06 By 張○○
 

自動目錄

Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式 簡稱: MPM) 它們分別是prefork,worker和event,它們同時也代表這Apache的演變和發展。在編譯Apache時必須選擇其中一個MPM,MPM會影響到Apache的速度和可伸縮性。[1]

apache2.0默認prefork, 2.2默認為worker, 2.4版本是event。

此篇著重於worker模式的設定,其運作優缺點在[1]中有詳細說明:

查看 mpm

$ httpd -V
Server version: Apache/2.4.37 (centos)
Server built:   Nov 12 2021 04:57:27
Server's Module Magic Number: 20120211:83
Server loaded:  APR 1.6.3, APR-UTIL 1.6.1
Compiled using: APR 1.6.3, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
... 中略 ...
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

 

Worker 調整參數

參數的調整主要參考[2]的詳細說明,基本上簡單整理下:

  1. 最大子行程數ServerLimit=100 x 每子行程執行緒數ThreadsPerChild=250 = 最大執行緒數=25000
  2. 開始的子行程數StartServers =50
  3. 最小閒置執行緒數MinSpareThreads=50<=閒置執行緒數<=最大閒置執行緒數MaxSpareThreads=250
  4. 子行程生命週其最大連線數=0,即不限制

 

# vim /etc/httpd/conf.modules.d/00-mpm.conf

#LoadModule mpm_event_module modules/mod_mpm_event.so <== 原本的註解

LoadModule mpm_worker_module modules/mod_mpm_worker.so
KeepAlive Off

<IfModule worker.c>
ServerLimit               100
StartServers               50
ThreadsPerChild           250
MinSpareThreads            50
MaxSpareThreads           250
MaxConnectionsPerChild      0
</IfModule>

 

測試效能

使用ab去壓測,測試10000個連線

$ ab -s 30 -n 10000 http://192.168.0.1/

調整前後測試數據

兩張對比圖分別是左調整前和右調整後的跑分,單位是ms數字越小越好。

右圖調整參數為上面的參數,大幅改善第100%的處理能力,由約1.6s減少為0.1s。

測試的網頁為單純的靜態網頁,沒有資料庫或其它程式的影響,因此比較能排除其它效能瓶頸導致的問題。

 

參考資料

[1] 阿輝的零碎筆記 https://dotblogs.com.tw/grayyin/2020/03/15/115350

[2] https://www.brilliantcode.net/877/apache-2-2-2-4-performance-tuning-mpm-engine/?cli_action=1641434802.1

[3] https://www.brilliantcode.net/2135/apache-advance-settings-keepalive/

END

你可能感興趣的文章

[PERL] 使用CPAN安裝模組 在Linux 上,CPAN 可以用來安裝或管理 perl 的模組,此文教你怎麼做。

[PERL] 命令列傳入參數 argv Perl 的外部傳參,是$ARGV[0]、$ARGV[1]、$ARGV[2].....

[PERL] 檢查IP是否在某個網段內:matchcidr 檢查IP是否在某個網段內 matchcidr in perl

[PERL] 簡易檢查網頁記錄檔ip來源統計 利用PERL來檢查網頁記錄檔ip來源統計的簡易程式

[PERL] 24-呼叫系統程式及評估 Perl 如何呼叫系統程式並取回結果?

[PERL] 11- 雜湊的範例 Perl 的幾個雜湊範例

隨機好文

問問題 問問題其實內涵很深,我悟了很久才懂。 有人問題的目的並不一定是想要得到答案,有時只是純粹想問問題..

此一時彼一時 我是不是易怒的人,其實我也不知道,總之我常會失控,不知道自己在幹嘛。這近生活過得浮浮的,不是很踏實,總會想太多,我甚至會

我的便利帶變垃圾袋--談預付制 預付制說穿了,就是對賣家極有利,對買家極小利的消費經營模式。

[HTLM5] 表單color、email、url、search、tel輸入類型 介紹HTML5好用的輸入類型:color、email、url,以及兩個形同雞肋的類型search、tel..

[CKeditor4] 設定區塊樣式、段落格式、字型名稱及字型大小 CKeditor4中要自訂設定區塊樣式、段落格式、字型名稱及字型大小。