1. 簡介
在第一篇中整合了apache + tomcat ,利用了apache解析靜態文件為tomcat解壓。但是在測試機上發現兩者性能不足,不能充分利用服務器的性能,該篇中將對apache進行性能上調優 。
這里的調優針對的是window 平台下 ,linux下apache的調優后續再說.
2. apache調優
2.1 移除不用的模塊
apache的功能相當強大,但不是在每個項目中都能用到其所有的功能,其中加載了一些我們通常用不到的模塊,這其實是沒有必要的 。
去除不用的模塊方法很簡單,通過#來注釋httpd.conf文件下加載的模塊,切記在注釋加載模塊一個一定一定要Test Configuration 一下,否則到時候出差錯了都不知道從哪里下手了.通常去掉
的模塊有: mod_include.so 、mod_autoindex.so等 ,可自行嘗試。當然在性能運行的情況下,不執行該操作.
2.2 設置線程參數
在httpd.conf配置中找到 #LoadModule vhost_alias_module modules/mod_vhost_alias.so 在后面加入:
<IfModule mpm_winnt_module> ThreadsPerChild 300 MaxRequestsPerChild 3000 </IfModule>
★ ThreadsPerChild 一個進程最多擁有的線程數 range[100-500]
★ MaxRequestsPerChild 一個線程最多可接受的連接數,默認為0 可能會導致內存泄漏,Apache存在輪詢機制,會自動調節
2.3 啟動Apache輸出壓縮
加載mod_deflate.so模塊,去掉#
LoadModule deflate_module modules/mod_deflate.so
然后在<IfModule mpm_winnt_module>...</IfModule> 后面追加如下配置:
<IfModule mod_deflate.c> DeflateCompressionLevel 6 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php AddOutputFilter DEFLATE js css </IfModule>
2.4 安全之Deny
通過Deny來禁止若干文件的訪問(提高安全性) ,其用法如下:
2.5 安全之防止dos攻擊
存在mod_dosevasive22.dll 可防止網絡上頁面進行dos攻擊(例如:機器人不斷刷新指定網頁,不斷訪問)。 下載該dll文件后放置在modules ,修改httpd.conf文件
在文件尾追加如下文件:
LoadModule dosevasive22_module modules/mod_dosevasive22.dll DOSHashTableSize 3000 DOSPageCount 3 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10
其中:
★ DOSHashTableSize 3000 黑名單總數
★ DOSPageCount 頁面被攻擊次數為該值時會判斷為dos攻擊
★ DOSSiteCount 站點被攻擊次數為該值時會判斷為dos攻擊
★ DOSPageInterval 讀取頁面間隔
★ DOSSiteInterval 讀取站點間隔
★ DOSBlockingPeriod 訪問IP被封時間間隔
時間單位為秒
配置完成以后關閉apache 然后啟動
啟動第一篇中配置的tomcat,訪問http://localhost/WebDemo/ 得到
按住F5不停刷新頁面,得到
10秒后可繼續訪問。
2.6 修改默認配置參數
在httpd.conf中搜索httpd-default.conf ,放開對其配置
Include conf/extra/httpd-default.conf
在該文件中存在了對apache的默認配置參數
# # Timeout: The number of seconds before receives and sends time out. # Timeout 300 # # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. # KeepAlive On
先說KeepAlive: 表示用戶請求完成后是否需要維持一個TCP連接 ;
on :表示請求完成時保持一個與服務器的TCP連接,如果還有請求,則在該連接中完成,無需重復建立連接,維持的時候為上面設置的Timeout時間(毫秒)
off : 表示請求完成以后立即關閉連接
兩者差異 :
on :需要消耗更多的內存,但是提高訪問速度,在頁面中js,css,img圖片較多的時候建議開啟
off :對內存消耗少,在頁面每次由app server動態生成時,建議設置為off
# # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests 100 # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 5
MaxKeepAliveRequests 不要設置為0 (0為不限制),容易導致內存異常 .服務器性能較高可適當調整,建議保持默認
注釋AccessFileName
#AccessFileName .htaccess
ServerSignature 設置為off 可防止服務器廣播敏感信息 默認為on
HostnameLookups 設置為on 可減少DNS查詢次數 .
2.7 監聽端口
默認情況下 apache 監聽為80 端口,在實際中最好是指定監聽具體的應用對應的 ip地址:80 即:
Listen xxx.xxx.xxx(具體的ip) :80
因為服務器可能擁有多個ip地址,這樣會倒置安全性降低 。這種情況應該很少見
2.8 關聯計算機Office軟件
在應用中經常要打開或者下載附件,例如word ,excel 等 可通過一下設置關鍵到本地的Office軟件來打開
在 AddType application/x-gzip .gz .tgz 后追加
AddType application/vnd.openxmlformats docx pptx xlsx doc xls ppt txt
2.9 清除注釋
這是最簡單的操作,沒有技術含量,將httpd.conf文件中所有的注釋信息全部刪掉 ,保持一個“純潔”的配置. 嘿嘿...
此篇到此結束!
備注:性能優化要通過實際操作來校驗的,不能想當然... 那啥來着 實踐是檢驗真理的唯一標准...