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