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

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
