Tomcat性能優化可從外部環境和自身調整兩方面著手。
外部環境主要是Tomcat所在服務器的運行環境,包括操作系統層面、部署以及Java虛擬機的配置。
操作系統
這里不再贅述,跟優化其他服務器的思路與步驟沒有本質區別。盡可能的增大可使用的內存容量、提高CPU的頻率、保證文件系統的讀寫速率等等。對于可能發生很大并發連接的情況,可能需要修改內核參數來設置最大連接數。 Sun的JVM應該是多數情況下的第一選擇。在滿足項目要求的前提下可以選用版本較高的JVM版本,一般來說高版本產品在速度和效率上比低版本會有改進。
Java虛擬機
由
于Jvm系統垃圾收集機制的存在,在高負載情況下如果能根據系統的具體要求有效的調整最優化堆的大小,也可以起到一定優化作用。如果堆設置較大,則GC次
數變少,但每次花費較長時間,從而導致系統處理能力抖動較大;如果堆設置較小,則GC變得頻繁,雖然對系統性能影響較小,但頻繁的GC也會耗費系統資源。
JVM動態庫有Server和Client兩個版本,雖然差別不是很大,但生產環境還是推薦使用Server版本。
初此之外,主要的JVM還包括BEA
JRockit,IBM JVM,Jikes RVM,Kaffe等?梢愿鶕椖康中間件產品選擇對應廠商的JVM來獲取有針對性的性能優化。
Tomcat自身的調整策略
- 啟動參數
Tomcat默認可以使用的內存是128MB?梢酝ㄟ^在啟動時加入“-Xms”和“-Xmx”參數來獲得更大的內存分配。但也要注意GC的問題。
- 負載均衡
比較復雜,有機會另文詳述。
- 集成Web服務器處理靜態內容
作 為一個Jsp/Servlet容器,Tomcat本身對靜態Html文件的相應速度遠遜Apache等Web服務器。通過與此類Web服務器的集成,可以 將對jsp內容的請求轉發至Tomcat,而用Web服務器處理靜態內容,能夠非常顯著的降低整體負載,提高整體響應的速度。
- 調整線程數
Tomcat5使用線程池(Apache Portable Runtime)來加速響應速度。默認創建5個線程,最大 線程數是200.如果并發較大,則可以對以下幾個參數進行具體的調整:
maxThreads:Tomcat可創建的最大線程數;
acceptCount:如果當前可用線程數為0,則將請求放入處理隊列中。這個值限定了請求隊列的大小,超過這個數值的請求將不予處理。
connectionTimeout:網絡連接超時數,單位毫秒。
minSpareThreads:如果當前沒有空閑線程,且沒有超過maxThreads,一次性創建的空閑線程數量。Tomcat初始化時創建的線程數量也由此值設置。
maxSpareThreads:一旦創建的線程超過此數值,Tomcat會關閉不再需要的線程。
線程數可以大致上用 “同時在線人數*每秒用戶操作次數*系統平均操作時間” 來計算。 - 使用Jikes
Jikes是性能優良的Java編譯器,在jsp容器中使用Jikes替代Sun的編譯器能夠有效提高jsp文件的編譯速度。對于Tomcat 5.5,可以參考Jasper-Howto。要注意的是Windows版本的Jikes是不支持-encoding選項的,你需要自己編譯?梢詤⒖歼@里。
- 用Ant進行預編譯
Tomcat官方推薦的部署方式是使用Ant對jsp進行預編譯。直接在部署時將jsp編譯為servlet類,能夠在運行初期時顯著提高響應速度。
文章來源于領測軟件測試網 http://www.kjueaiud.com/