Tomcat優(yōu)化,可以分為內(nèi)存,線程,IO.
1、Tomcat內(nèi)存優(yōu)化,啟動(dòng)時(shí)告訴JVM我要一塊大內(nèi)存(調(diào)優(yōu)內(nèi)存是最直接的方式)
catalina.sh 中:
JAVA_OPTS='-Xms256m -Xmx512m'
-Xms<size> JVM初始化堆的大小
-Xmx<size> JVM堆的最大值 實(shí)際參數(shù)大小根據(jù)服務(wù)器配置或者項(xiàng)目具體設(shè)置.
2、Tomcat 線程優(yōu)化在server.xml中 如:
maxThreads="X" 表示最多同時(shí)處理X個(gè)連接
minSpareThreads="X" 初始化X個(gè)連接
maxSpareThreads="X" 表示如果最多可以有X個(gè)線程,一旦超過X個(gè),則會(huì)關(guān)閉不在需要的線程
acceptCount="X" 當(dāng)同時(shí)連接的人數(shù)達(dá)到maxThreads時(shí),還可以排隊(duì),隊(duì)列大小為X.超過X就不處理
3、Tomcat IO優(yōu)化
tomcat默認(rèn)采用的BIO模型,在幾百并發(fā)下性能會(huì)有很嚴(yán)重的下降。tomcat自帶還有NIO的模型,另外也可以調(diào)用APR的庫(kù)來實(shí)現(xiàn)操作系統(tǒng)級(jí)別控制。NIO模型是內(nèi)置的,調(diào)用很方便,只需要將上面配置文件中protocol修改成 org.apache.coyote.http11.Http11NioProtocol,重啟即可生效。如下面的參數(shù)配置,默認(rèn)的是HTTP/1.1。
<Connector port=”8080″?protocol=”org.apache.coyote.http11.Http11NioProtocol”?connectionTimeout=”20000″?redirectPort=”8443″?maxThreads=”500″?minSpareThreads=”20″?acceptCount=”100″?disableUploadTimeout=”true” enableLookups=”false”?URIEncoding=”UTF-8″ />
4、APR是從操作系統(tǒng)級(jí)別來解決異步的IO問題,大幅度的提高性能. (http://apr.apache.org/).
APR(Apache Portable Runtime)是一個(gè)高可移植庫(kù),它是Apache HTTP Server 2.x的核心.能更好地和其它本地web技術(shù)集成,總體上讓Java更有效率作為一個(gè)高性能web服務(wù)器平臺(tái)而不是簡(jiǎn)單作為后臺(tái)容器.
安裝Apache Tomcat Native Library,直接啟動(dòng)就支持apr