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

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