首頁 >php教程 >PHP开发 >Apache的效能最佳化(六)

Apache的效能最佳化(六)

黄舟
黄舟原創
2016-12-21 11:28:371509瀏覽

估算參數的例子(作個參考,不一定適合我們的情況):
Apache缺省的最大用戶數是256個:這個配置對於伺服器記憶體還是256M左右的時代是一個非常好的缺省設置,但隨著記憶體成本的急劇下降,現在大型網站的伺服器記憶體配置一般比當時高一個數量級不止。所以256個進程的硬限制對於一台1G記憶體的機器來說是太浪費了,而且Apache的軟上限 max_client是受限於HARD_SERVER_LIMIT的,因此如果WEB伺服器記憶體大於256M,都應該調高Apache的 HARD_SERVER_LIMIT。根據個人的經驗:2560已經可以滿足大部分小於2G記憶體的伺服器的容量規劃了
 
一個apache + mod_php的伺服器:一個apache進程一般需要4M記憶體
因此在一個1G記憶體的機器上:apache_max_process_with_good_perfermance apache_max_process = 500 * 1.5 = 750
所以規劃你的應用讓服務盡量跑在500個進程以下以保持比較高的效率,並設定Apache的軟上限在800個。
範例2:
一個apache + mod_resin的伺服器: 一個apache進程一般需要2M記憶體
在一個2G記憶體的機器上: 
apache_max_process_with_good_perfermance - -prefix=/another_driver/apache/:建議將apache服務安裝在另一個驅動設備上的目的在於硬碟往往是一個系統使用壽命最低的設備,因此:將服務數據和作業系統完全分開,不僅能提高了數據的存取速度,更重要的,大大方便系統升級,應用備份和復原過程。
--shared-module=max:使用這種動態載入方式載入子模組會帶來5%的效能下降.但給標準化安裝和維護帶來的好處也遠比這多。我們的應用比較固定建議使用靜態的。
grep -v "#" httpd.conf.default >httpd.conf
#最大服務進程數:根據服務容量預測設定
MaxClients 256 => 800
其他apache效能最佳化配置:
HostnameLookups off
On會帶來延遲,因為對每一個請求都需要作一次DNS查詢。
Options FollowSymLinks
為了得到最佳性能,並放棄對符號連接的保護,可以在需要的地方都設置FollowSymLinks, 而放棄使用SymLinksIfOwnerMatch.
AllowOverride None
如果URLaccess(通常是用空間允許覆蓋文件(通常是用ht.access),則Apache會試圖對每個檔案名稱組成部分開啟.htaccess. 
DirectoryIndex index.cgi  index.pl  index.shtml  index.html
其中最常用的應該放在前面. 不要用通配符而使用完整的列表.
EnableMMAP. off
在Apache 2.0需要搜尋被傳送檔案的內容時,例如處理伺服器端包含時, 如果OS支援某種形式的mmap(2),則會對此檔案執行記憶體對應。
在某些平台上,內存映射可以提高性能,但是在某些情況下, 內存映射會降低性能甚至影響到httpd的穩定性.我們這個應用則關閉對發送文件的內存映射比較合適。
mod_status 和ExtendedStatus Off
如果Apache在編譯時包含了mod_status, 而且在運行時設置了ExtendedStatus On,則, 對每個請求Apache都會調用兩次gettimeofday(2) (或者根據操作系統的不同,調用times( 2)), 以及(pre-1.3)幾個額外的time(2)調用,使狀態記錄帶有時間標誌。 為了得到最佳效能,可以設定ExtendedStatus off (這也是預設的).
調整TCP 連接切斷參數
   在/etc/sysctl.conf 中加入:
   net.inet.tcp.msl=2000
 .always_keepalive=0
   
   上述設定將防止TCP連線預設以Keep Alive方式建立,並避免大量的空閒連線消耗OS
資源;此外,TCP TIME_WAIT的等待時間也從60秒減少到4秒。
 調整 UFS dirhash 允許的內存用量
   vfs.ufs.dirhash_maxmem=67108864 (此設定在5.3p14中已經自動包含)
   
   此設定將倍率提高此設定將倍。
 在Apache 設定中停用KeepAlive:
   編輯/usr/local/etc/apache2/httpd.conf,將
      Keep上的連接從大約2200降低到400
以下。並有效改善響應時間。先前(大約3週)已經在部分機器上應用了上述設置,目前
為止基本上可以確認這些設置不會造成可以為用戶所感知的不良影響,同時會改善服務的
響應時間,因此建議在線的全部系統均應用上述設定。
具體技術細節
目前在線上的 FreeBSD 5.3 版本(無論patchlevel)的SINAMAIL內核中均聯入了
ACCF_HTTP,其作用是在來自客戶的HTTP請求完成之後再將其發送給應用程序,從而降低
由於客戶端網路較慢導致httpd過早開始等待連接所造成的資源消耗。
停用KeepAlive之後,客戶端在請求多個資源時,將有更大機會發出並發的請求。從
而,由於鏈路發生丟包等問題而發生的延遲對於下載其他資源的影響將會削弱。縮短
TCP分片逾時之後,等待連線關閉的時間將會縮短,並使建立的連線更趨穩定。
預設的dirhash最大記憶體為2MB。目前在生產系統上獲得的實際用量通常在16-20MB左
右。將其擴大將改善同一目錄下的檔案的存取效能。
 
簡單效能測試:(建議對配置各種參數分別測試,找出最佳最佳化參數)
用apache自己帶的ab,進行測試的方法,如需要自己測試下就可以了。
[yangbin1@vHost-RH9 apache]$ ./bin/ab -n 10000 -c 100  http://10.210.128.189:7981/
This is ApacheBench, Version 2.0.400-dev. > apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking 10.210.128.189 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
questleted 4000 requested
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Finished 10000 requests

Server Software:        Apache/2.0.49

Server Hostname:        10.210.128.189

Server Port:            7981
Document Path:          /
Document Length:        1456 bytes
Concurrency Level:      100
Time taken for tests:   20.756253 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:   84 bytes
Requests per second:    481.78 [#/sec] (mean)
Time per request:       207.563 [ms] (mean)
Time per request:       2.076 [ms] (mean, across all concurrent requests)
Transfer rate:         與   min  mean[+/-sd] median   max
Connect:        0   78  60.7     99 554
Processing:    20  125  57.8    114    1149
Waiting:        5  111  53.2    104     869
Total:         47  204  84.4    214    1303
Percentage of the requests served within a certain time (ms)
  50%    214
  66%    218
  75%    220
  80%    223
  90%    264
  95%    302
     request)
檢定結果分析:暫時沒有。

 以上就是Apache的效能最佳化(六)的內容,更多相關內容請關注PHP中文網(www.php.cn)! 



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn