Apache 2.2/2.4 效能調校 #01 Worker MPM

都架好Apache Server,卻還是使用預設值運行的話,那還真是浪費!
枉費你花了時間架設Linux、過多的記憶體、這麼好的CPU!
都架好之後當然就是要把硬體效能壓榨出來!
ps. 其實網路頻寬夠大的話,使用Apache Worker MPM,只需少少4GB記憶體就能跑出驚人效能!
(本篇以CentOS 7和CentOS 6.8為例,但是修改方法適用於所有Linux上的Apache!)

前置作業
  1. 先確定你的伺服器CPU為多核心,因為多核心伺服器才能使用Multi-Processing Module!
  2. 確認伺服器作業系統不是Windows,因為對於Windows的Apache而言,最好的模組就是WINNT!
    設定方式可以參考:Apache MPM winnt
Step 1

確認MPM Engine

確認你的Apache Server現在用哪一個MPM Engine?
下列第3行的『Server MPM』可以看得出來現在伺服器並使用的是『Prefork』 Engine,這是Apache預設使用的MPM引擎,使用起來並沒有特別好,無法體現出高規格伺服器的能耐!
接下來就是要把它調整成Worker Engine!

 

Step 2

修改設定檔

Apache 2.4

編輯設定檔『 /etc/httpd/conf.modules.d/00-mpm.conf 』
增加第6行的註解,
去除第12行的註解!
存檔離開!

 

Apache 2.2

編輯設定檔『 /etc/sysconfig/httpd 』
將下列第9行的註解去除,存檔離開!

 

Step 3

重啟Apache

先重啟Apache看看吧!
此步驟不能出錯唷!有錯誤的話要先debug~

CentOS 7

 

CentOS 6.8

 

Step 4

修改Config

Apache 2.4修改原則(CentOS 7):

將『<IfModule worker.c>…</IfModule』的設定值貼在第7行之後即可,記得將設定值改為符合伺服器硬體能力的數值!

  • MinSpareThreads和MaxRequestWorkers:最好設定成一樣的數值!
  • ServerLimit:最好設定成大於或等於MaxRequestWorkers除以ThreadsPerChild的數值!
    以下列為例:MaxRequestWorkers/ThreadsPerChild = 20, 所以ServerLimit也設成20
  • MaxSpareThreads:必須要大於 MinSpareThreads (廢話)
  • MaxConnectionsPerChild:設定成0

 

Apache 2.2修改原則(CentOS 6.8):

  • MinClient和MaxSpareThreads:最好設定成一樣的數值!
  • ServerLimit:最好設定成大於或等於MaxClients除以ThreadsPerChild的數值!
    以下列為例:MaClients/ThreadsPerChild = 20, 所以ServerLimit也設成20
  • MaxSpareThreads:必須要大於 MinSpareThreads (廢話)
  • MaxRequestsPerChild:可以設成0

 

Step 5

重啟Apache Server

CentOS 7

 

CentOS 6.8

 

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

%d 位部落客按了讚: