tomcat jvm性能调优

一直在学习和研究jvm的内存分布和垃圾回收算法及各种垃圾回收器,学过之后决定动手实践一下真实的运用到项目上。

服务器信息:

4核,8G内存,阿里云服务器

tomcat7 ,jdk8,真实运行的项目,测试的地址包含数据库查询和网络访问

压测工具:siege


优化前使用tomcat对jvm内存和垃圾回收器默认设置,仅加了打印gc回收日志的信息配置,在catalina.sh最上面配置,配置信息如下

JAVA_OPTS='-XX:+PrintGCDetails -Xloggc:/var/logs/gc.log'


优化后的tomcat配置了jvm为server,内存为2G,元空间(metaspace)为256M,老年代使用cms垃圾回收器,年轻代垃圾回收器使用默认配置,配置信息如下:

JAVA_OPTS='-server -Xmx2048m -Xms2048m -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -XX:+UseConcMarkSweepGC  -verbose:gc -XX:+PrintGCDetails -Xloggc:/var/logs/gc.log'


使用siege工具对测试地址进行500同时并发100次循环的操作,连续操作两次命令如下:

siege -c 500 -r 100 http://127.0.0.1:8080/service/manage/tokenInfo.do?uid=H110119


优化前后siege两次操作结果对比,如图


优化前后jvm回收器回收情况结果对比,如图:


通过日志信息进行每次gc和fullgc时间计算对比,如图




结果总结:

对tomcat的jvm参数设置优化以后,测试同一个地址,平均响应时间变短,并发访问数量增加,fullgc时间明显变短

缺点:使用cms回收器对cpu资源使用比较大,默认使用(cpu数+3)/4个线程来处理

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页