HTTP Server性能調優

IBM HTTP Server 主要是由開源的Apache HTTP Server衍生而來,其相應的性能優化也與Apache的相似。

優化主要是由其{HOME}/conf/httpd.conf文件來進行參數調優。

主要的調優方法有:

1.在httpd.conf只加載需要的module:
在Apache HTTP Server能選擇不同功能的module加入配置。這些配置可以是靜態也可以是動態共享(DSO)的加入。DOS的模式可以在開始的時候編譯也可以使用apxs工具在稍後編譯。所以你可以
只加載需要的modules以減少相應的系統開銷。

 

2.在httpd.conf中的<IfModule mpm_winnt.c>的配置:
mpm_winnt.c是專門針對Windows NT(Server)優化的MPM(多路處理模塊),它使用一個單獨的父進程產生一個單獨的子進程,在這個子進程中輪流產生多個線程來處理請求。也就是說 mpm_winnt只能啓動父子兩個進程, 不能像Linux下那樣同時啓動多個進程。

mpm_winnt主要通過ThreadsPerChild和MaxRequestsPerChild兩個參數來優化Apache,下面詳細來說明一下。

 

ThreadsPerChild
這個參數用於設置每個進程的線程數, 子進程在啓動時建立這些線程後就不再建立新的線程了. 一方面因爲mpm_winnt不能啓動多個進程, 所以這個數值要足夠大,以便可以處理可能的請求高峯; 另一方面該參數以服務器的響應速度爲準的, 數目太大的反而會變慢。因此需要綜合均衡一個合理的數值。

mpm_winnt上的默認值是64, 最大值是1920. 這裏建議設置爲100-500之間,服務器性能高的話值大一些,反之值小一些。

 

ThreadLimit
如果需增加Apache的線程數,沒有ThreadLimit行,ThreadPerChildd的值超過了1920,線程最大值也只能達到 1920。

 

MaxRequestsPerChild
該參數表示每個子進程能夠處理的最大請求數, 即同時間內子進程數目.設置爲零表示不限制, mpm_winnt上的默認值就是0.

官方參考手冊中不建議設置爲0, 主要基於兩點考慮: (1) 可以防止(偶然的)內存泄漏無限進行,從而耗盡內存; (2) 給進程一個有限壽命,從而有助於當服務器負載減輕的時候減少活動進程的數量。

因此這個參數的值更大程度上取決於服務器的內存,如果內存比較大的話可以設置爲0或很大的數字,否則設置一個小的數值。需要說明的是,如果這個值設置的太小的話會造成Apache頻繁重啓,在日誌文件中會看到如下的文字:

Process exiting because it reached MaxRequestsPerChild. Signaling the parent

這樣一來降低了Apache的總體性能。

發佈了37 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章