tomcat版本:8.5.29
jdk版本:openjdk-1
centos :7 記憶體4G 4核
預設tomcat connectors是bio阻塞模式,修改為APR模式如下
在confi/server.xml
開啟listen<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
采用線程池配置如下
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="100" maxIdleTime="60000" prestartminSpareThreads="false" threadPriority="5" className="org.apache.catalina.core.StandardThreadExecutor" />
<Connector executor="tomcatThreadPool" port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="1000"
connectionTimeout="20000"
redirectPort="8443" />
接下來優化catalina.sh,優化jvm配置如下
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -XX:MinHeapFreeRatio=80 -XX:MaxHeapFreeRatio=80 -XX:ThreadStackSize=512 -XX:NewSize=128m -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+AggressiveOpts -XX:+UseBiasedLocking
-XX:+UseConcMarkSweepGC -XX:+ScavengeBeforeFullGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:../logs/performance_gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../logs/performance_heapdump.hprof
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true"
配置Java Mission Control監控工具
CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8901 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=jmxremote.password -Dcom.sun.management.jmxremote.access.file=jmxremote.access -Djava.rmi.server.hostname=10.1.12.49"
啟動tomcat,可以采用./catalina.sh run 控制台方式運作。
使用http apr方式會遇到錯誤,原因是tomcat-nactive沒有安裝
解壓tomcat檔案夾下面tomcat-native.tar.gz包,解壓後安裝apr,apr-util工具。
yum install apr-devel openssl-devel (centos7預設是openssl1.0.2)
如果找不到apr軟體安裝位置可以使用 rpm -qal |grep apr
執行腳本編譯 ./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl
編譯後執行make & make install,配置apr包到Tomcat可識别的路徑,執行如下指令
mkdir -r /usr/java/packages/lib/amd64
cd /usr/java/packages/lib/amd64
ln -s /usr/local/apr/lib/libtcnative-1.so.0.2.16 libtcnative-1.so
ln -s /usr/local/apr/lib/libtcnative-1.so.0.2.16 libtcnative-1.so.0
測試tomcat性能,可以使用Jmc連接配接到tomcat觀看。jmc在java/bin下面。