標籤:
Tomcat的運行模式有3種
1、bio
預設的模式,效能非常低下,沒有經過任何最佳化處理和支援.
2、nio
利用java的非同步io護理技術,noblocking IO技術.
想運行在該模式下,直接修改server.xml裡的Connector節點,修改protocol為
<Connector port="80″protocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"URIEncoding=”UTF-8″useBodyEncodingForURI="true"enableLookups="false"redirectPort="8443">
啟動後,就可以生效。
3、apr
從作業系統層級來解決非同步IO問題,大幅度的提高效能。
必須要安裝apr和native,直接啟動就支援apr
修改protocol為org.apache.coyote.http11.Http11AprProtocol
安裝apr
yum -y install apr apr-devel
安裝native
進入tomcat/bin目錄,比如:
cd /usr/local/tomcat/bin/ tar xzfv tomcat-native.tar.gzcd tomcat-native-1.1.20-src/jni/native/ ./configure --with-apr=/usr/bin/apr-1-configmake && 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
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" />
Tomcat的三種模式及並發最佳化