性能測試的過程中,經(jīng)常會使用到監(jiān)控Tomcat運(yùn)行情況,然后再有針對性的進(jìn)行優(yōu)化。JDK自帶了一個監(jiān)控工具jvisualvm,可以用來監(jiān)控Tomcat的運(yùn)行情況,位置在JDK的bin目錄下

01.png
使用jvisualvm可以監(jiān)控Tomcat對應(yīng)使用cpu、內(nèi)存、線程數(shù)等情況

02.png
還可以在【工具】-【插件】下擴(kuò)展更多的監(jiān)控維度

03.png
Linux下遠(yuǎn)程監(jiān)控配置
1.在jdk對應(yīng)的bin目錄下創(chuàng)建文件jstatd.all.policy,并授予可執(zhí)行權(quán)限
文件內(nèi)容:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

04.png
2.在jdk的bin目錄下執(zhí)行命令
nohup jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=172.18.104.102 & (172.18.104.102為服務(wù)器的ip地址)

05.png
3.jvisualvm中添加遠(yuǎn)程主機(jī)查看效果

06.png
4.Linux下配置jmx管理Tomcat
在Tomcat/bin目錄下catalina.sh文件中,‘Execute The Requested Command ’前添加:
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
(此配置無須賬號和密碼,連接端口為9004)
Tomcat性能優(yōu)化
1.線程數(shù)設(shè)置
#Tomcat啟動的最大線程數(shù)5000
maxThreads="5000"
#Tomcat初始化的線程數(shù)500
minSpareThreads="500"
#Tomcat線程數(shù)達(dá)到2500,會自動關(guān)閉不再需要的連接
maxSpareThreads="2500"
#最大線程支持?jǐn)?shù),超過5000個線程將不再處理
acceptCount="5000"

07.png
2.內(nèi)存設(shè)置
Tomcat/bin目錄下catalina.sh文件中添加
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx6144m -XX:NewSize=4096m -XX:MaxNewSize=8250m -XX:SurvivorRatio=8"
-server:一定要作為第一個參數(shù),在多個CPU時性能佳
-Xms:java Heap初始大小。 默認(rèn)是物理內(nèi)存的1/64
-Xmx:java heap最大值。建議均設(shè)為物理內(nèi)存的一半。不可超過物理內(nèi)存
-XX:NewSize: 新生成的池的初始大小
-XX:MaxNewSize: 新生成的池的最大大小
-XX:SurvivorRatio:兩個Survivor區(qū)與一個Eden區(qū)的比值為2:8

08.png