Tomcat的三種模式及併發優化


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" />
相關文章
相關標籤/搜索