apache服務器性能研究

  apache服務器性能研究

 從網頁上查了一個計算公式,主要是設置不知道正確與否:

  

連接數理論上當然是支持越大越好,但要在服務器的能力範圍內,這跟服務器的CPU、內存、帶寬等都有關係。

計算httpd佔用內存的平均數:
ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'

由於基本都是靜態頁面,CPU消耗很低,每進程佔用內存也不算多,大約200K。

服務器內存有2G,除去常規啓動的服務大約需要500M(保守估計),還剩1.5G可用,那麼理論上可以支持1.5*1024*1024*1024/200000 = 8053.06368

約8K個進程,支持2W人同時訪問應該是沒有問題的(能保證其中8K的人訪問很快,其他的可能需要等待1、2秒才能連上,而一旦連上就會很流暢)

 

       這個數據不知道是怎麼算的,假如服務器內存定位4G,則計算公式應該就改爲:3.5*1024*1024*1024/200000 =18790.48192(不知道這個值是否成立)

如果以上值成立的話,基本上滿足我們的要求了。

     目前apache的主流工作模式MPM模式。MPM是Multi-Processing-Modules的簡稱,意思是多道處理模塊。MPM模塊有不同的種類。現在用的比較多的MPM種類主要是prefork和worker:

prefork的工作方式是多個進程工作,每個進程會在處理一定數量的請求後結束(這個數量可能是無窮),沒有線程的概念。

worker被看作apache未來的主流工作模式,它是一種多進程與多線程混合的模式。

 apache有關併發控制主要是prefork和worker二個其中一個來控制。

Prefork模式:

默認值:

<IfModulempm_prefork_module>
               StartServers                           5
               MinSpareServers                  5
               MaxSpareServers                 10
               MaxClients                             150
               MaxRequestsPerChild            0
</IfModule>

 #有這個參數就不必像apache1一樣修改源碼才能修改256客戶數的限制,聽講要放到最前面纔會生效,20000是這個參數的最大值

ServerLimit 20000

#指定服務器啓動時建立的子進程數量,prefork默認爲5。

StartServers 25

 

#指定空閒子進程的最小數量,默認爲5。如果當前空閒子進程數少於MinSpareServers ,那麼Apache將以最大每秒一個的速度產生新的子進程。此參數不要設的太大。

MinSpareServers 25

 

#設置空閒子進程的最大數量,默認爲10。如果當前有超過MaxSpareServers數量的空閒子進程,那麼父進程將殺死多餘的子進程。此參數不要設的太大。如果你將該指令的值設置爲比MinSpareServers小,Apache將會自動將其修改成"MinSpareServers+1"。

MaxSpareServers 50

 #限定同一時間客戶端最大接入請求的數量(單個進程併發線程數),默認爲256。任何超過MaxClients限制的請求都將進入等候隊列,一旦一個鏈接被釋放,隊列中的請求將得到服務。要增大這個值,你必須同時增大ServerLimit。

MaxClients 2000

 #每個子進程在其生存期內允許伺服的最大請求數量,默認爲10000.到達MaxRequestsPerChild的限制後,子進程將會結束。如果MaxRequestsPerChild爲"0",子進程將永遠不會結束。

MaxRequestsPerChild 10000

 

這篇是結合網絡上文章做得整理,只做了部分驗證,僅供參考!如果需要請聯繫我!

  

參考文章:

1、  apache併發數調整http://blog.csdn.net/nich262/article/details/4069078

2、  apache的參數設置

http://hi.baidu.com/thinkinginlamp/blog/item/6f969f3d8965d601bba1676f.html

3、  Apache2.0性能優化—MPM的選擇與配置

http://bbs.chinaunix.net/viewthread.php?tid=544063

4、  如何避免apache的httpd進程佔用比較多的內存

http://hi.baidu.com/acquiesce/blog/item/6875e710821115ffc2ce7961.html?

5、  對apache中併發控制參數prefork理解和調優

http://www.php-oa.com/2008/02/22/prefork.html

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