天天看點

tomcat一次優化經曆

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下面。

繼續閱讀