Apache串連數設定

來源:互聯網
上載者:User

prefork幾乎還是目前的唯一MPM,我在下面主要還是討論它的工作原理和相關指令調整。查看預設產生的httpd.conf設定檔,會發現裡麵包含如下的配置段:

以下為引用的內容:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>

prefork的工作原理是這樣的:控制進程在最初建立StartServers個子進程後, 為了滿足MinSpareServers設定的需要,建立一個進程,等待一秒鐘,繼續建立第二個,等待一秒鐘,繼而建立四個,如此按指數級增加建立的進程數,最多達到每秒32個,直到滿足MinSpareServers設定的值為止,這也就是預派生(prefork)的由來。這種模式可以使得不必在請求到來時再產生新的進程,從而減小了系統開銷以增加效能。

axSpareServers 設定了最大的空閑進程數,如果空閑進程數大於這個值,Apache會自動kill某些多餘進程。這個值一般不要設的過大,但如果設的比MinSpareServers小,Apache會自動把它調整為MinSpareServers+1。如果網站負載較大的話,可考慮同時加大MinSpareServers和MaxSpareServers。

MaxRequestsPerChild設定的是每個子進程可以處理的請求數。每個子進程在處理了MaxRequestsPerChild個請求後將自動銷毀。0意味著無限,即子進程永不銷毀。雖然預設設為0可以使每個子進程處理更多的請求,但如果設成非零值也有兩點重要的好處:

1、可防止意外的記憶體卸漏;

2、在伺服器負載下降的時侯會自動減少子進程數。

因此,可根據伺服器的負載來調整這個值,如果非零的話,筆者認為10000左右是比較合適的。事實上這個值對Apache的效能影響不是很大。

MaxClients 是這些指令中最為重要的一個,它設定的就是Apache可以同時處理的請求,這是對Apache效能影響最大的參數.在我個人看來,預設的150是遠遠不夠的,如果請求總數已達到這個值(可通過ps –ef|grep httpd|wc –l來確認),那麼下面的請求就要排隊,直到某個已處理請求完畢。這就是為什麼系統資源還剩下很多,而http訪問卻很慢的主要原因。系統管理員可以根據硬體設定和負載情況來動態調整這個值,雖然理論上這個值越大,可以處理的請求就越多,但Apache預設的限制是不能大於256。如果把這個值設為大於256那麼Apache將無法起動。事實上,256對於負載稍重的網站也是很不夠的。在Apache1.3中這是個硬限制,如果要加大這個值,必須在configure前手工修改原始碼樹下的src/include/httpd.h,尋找256,會發現#define HARD_SERVER_LIMIT 256這行,把256改為你要增大的值如4000,然後重新編譯Apache即可。我想這個方法稍有些經驗的Apache系統管理員都知道,不過我相信在Apache2.0中知道如何加大這個值的人就不會太多了。

在Apache2.0中新加入了ServerLimit指令,使得無須重編譯Apache就可以加大MaxClients。下面是筆者的prefork配置段。

以下為引用的內容:
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>

BTW: ServerLimit的最大值是20000,這對於大多數網站是足夠了,但如果你一定要再加大的話,那麼這個值位於原始碼樹下的server/mpm/prefork/prefork.c中。裡面的

#define DEFAULT_SERVER_LIMIT 256

#define MAX_SERVER_LIMIT 20000

這兩行就對應著MaxClients和ServerLimit的限制值。但我相信很少有人可以用到20000的並發串連數。



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。