淺談Tomcat服務(wù)器優(yōu)化方法
對于JavaWeb開發(fā)人員而言,Tomcat已成為默認的web服務(wù)器,但是在生產(chǎn)環(huán)境下使用Tomcat部署應(yīng)用,我們?nèi)绻捎肨omcat默認的配置,尤其是內(nèi)存和線程的配置,其配置都很低,容易成為性能瓶頸,所以我們需要對Tomcat服務(wù)器進行優(yōu)化,提升其運行性能,下面我們一起來看看Tomcat如何優(yōu)化?
一、Tomcat內(nèi)存優(yōu)化,啟動時告訴JVM需要多大內(nèi)存(調(diào)優(yōu)內(nèi)存是直接的方式)
Windows 下的 catalina.bat
Linux 下的 catalina.sh
在該文件中配置jvm的內(nèi)存空間,如: JAVA_OPTS='-Xms256m -Xmx512m'
-Xms JVM初始化堆的大小
-Xmx JVM堆的值,實際參數(shù)大小根據(jù)服務(wù)器配置或者項目具體設(shè)置;
二、Tomcat 線程優(yōu)化 在server.xml中配
三、Tomcat IO 優(yōu)化
1:同步阻塞IO(JAVA BIO) 同步并阻塞,服務(wù)器實現(xiàn)模式為一個連接一個線程(one connection one thread 想想都覺得恐怖,線程可是非常寶貴的資源),當然可以通過線程池機制改善.
2:JAVA NIO 又分為同步非阻塞IO,異步阻塞IO與BIO的區(qū)別one request one thread.可以復(fù)用同一個線程處理多個connection(多路復(fù)用).
3:異步非阻塞IO(Java NIO2又叫AIO) 主要與NIO的區(qū)別主要是操作系統(tǒng)的底層區(qū)別,可以做個比喻:比作快遞,NIO就是網(wǎng)購后要自己到官網(wǎng)查下快遞是否已經(jīng)到了(可能是多次),然后自己去取快遞;AIO就是快遞員送貨上門了(不用關(guān)注快遞進度)。
BIO方式適用于連接數(shù)目比較小且固定的架構(gòu),這種方式對服務(wù)器資源要求比較高,并發(fā)局限于應(yīng)用中,JDK1.4以前的選擇,但程序直觀簡單易理解.
NIO方式適用于連接數(shù)目多且連接比較短(輕操作)的架構(gòu),比如聊天服務(wù)器,并發(fā)局限于應(yīng)用中,編程比較復(fù)雜,JDK1.4開始支持.
AIO方式使用于連接數(shù)目多且連接比較長(重操作)的架構(gòu),比如相冊服務(wù)器,充分調(diào)用OS參與并發(fā)操作,編程比較復(fù)雜,JDK7開始支持.
四、大殺器APR
APR是從操作系統(tǒng)級別來解決異步的IO問題,大幅度的提高性能. (http://apr.apache.org/)。
APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x 的核心,能更好地和其它本地web技術(shù)集成,持apr(http://tomcat.apache.org/native-doc/)它本身是基于APR的,排除代碼問題Tomcat優(yōu)化到這個層次,可以應(yīng)對大部分性能需求;
后,優(yōu)化的前提條件是良好的代碼質(zhì)量和設(shè)計。