Tomcat的運行模式有3種
一、bio
默認的模式,性能很是低下,沒有通過任何優化處理和支持. java
二、nio
利用java的異步io護理技術,noblocking IO技術.
想運行在該模式下,直接修改server.xml裏的Connector節點,修改protocol爲 apache
<Connector port="80″ protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" URIEncoding=」UTF-8″ useBodyEncodingForURI="true" enableLookups="false" redirectPort="8443">
啓動後,就能夠生效。 tomcat
三、apr
從操做系統級別來解決異步的IO問題,大幅度的提升性能。
必需要安裝apr和native,直接啓動就支持apr
修改protocol爲org.apache.coyote.http11.Http11AprProtocol 併發
安裝apr dom
yum -y install apr apr-devel
安裝native
進入tomcat/bin目錄,好比: 異步
cd /usr/local/tomcat/bin/ tar xzfv tomcat-native.tar.gz cd tomcat-native-1.1.20-src/jni/native/ ./configure --with-apr=/usr/bin/apr-1-config make && make install
安裝完成以後 會出現以下提示信息 性能
Libraries have been installed in: /usr/local/apr/lib
安裝成功後還須要對tomcat設置環境變量,方法是在catalina.sh文件中增長1行: 優化
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
修改8080端對應的conf/server.xml spa
protocol="org.apache.coyote.http11.Http11AprProtocol"
啓動tomcat以後,查看日誌會有這一行信息,說明已是APR模式啓動了 操作系統
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
併發優化
1.JVM調優
新增文件TOMCAT_HOME/bin/setenv.sh以下語句,具體數值視狀況而定。
JAVA_OPTS="-Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=64m -XX:MaxPermSize=128m"
參數詳解
-Xms JVM初始化堆內存大小 -Xmx JVM堆的最大內存 -Xss 線程棧大小 -XX:PermSize JVM非堆區初始內存分配大小 -XX:MaxPermSize JVM非堆區最大內存
建議和注意事項:
-Xms和-Xmx選項設置爲相同堆內存分配,以免在每次GC 後調整堆的大小,堆內存建議佔內存的60%~80%;非堆內存是不可回收內存,大小視項目而定;線程棧大小推薦256k.
32G內存配置以下:
JAVA_OPTS="-Xms20480m -Xmx20480m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"
2.關閉DNS反向查詢
在<Connector port=」8080″ 中加入以下參數
enableLookups="false"
3.優化tomcat參數(使用APR)
<Listener className="org.apache.catalina.core.AprLifecycleListener" /> ... <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" //連接超時時長 redirectPort="8443" maxThreads="500" minSpareThreads="20" acceptCount="1000" enableLookups="false" URIEncoding="UTF-8" />