歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Tomcat的三種模式及並發優化

Tomcat的三種模式及並發優化

日期:2017/2/27 15:55:08   编辑:Linux教程
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.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
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/catalina.sh 增加如下語句,具體數值視情況而定。
添加到上面CATALINA_OPTS的後面即可:
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" />
原文:http://blog.magedu.com/archives/319
Copyright © Linux教程網 All Rights Reserved