JVM 调优实战--tomcat8优化

目录


tomcat配置优化

部署安装tomcat8

配置tomcat8

禁用AJP连接

设置tomcat线程池(执行器)

tomcat的3种运行模式

使用Apache Jmeter进行测试

下载安装jmeter

使用步骤 

调整tomcat参数进行优化

调整JVM参数进行优化

设置并行垃圾回收器

查看GC日志文件

调整年轻代大小

查看GC日志

设置G1垃圾收集器

小结


tomcat配置优化

部署安装tomcat8

配置tomcat8

禁用AJP连接

重启tomcat,即可生效。

查看禁用后的效果:

设置tomcat线程池(执行器)

频繁地创建线程会造成性能浪费,所以使用线程池来优化:

tomcat的3种运行模式

tomcat8之前的版本用的是BIO,推荐使用NIO,tomcat8中有最新的NIO2,速度更快,建议使用NIO2。

使用Apache Jmeter进行测试

将web应用部署到服务器之后,使用jmeter对其进行压力测试。

下载安装jmeter

使用步骤 

设置中文:

创建并保存测试用例:

添加线程组,使用线程模拟用户的并发:

调整tomcat参数进行优化

tomcat不进行任何参数调整时,吞吐量为73次/秒,接下来进行参数优化:

①禁用AJP服务:吞吐量提升至117.6

②设置线程池:单纯提升线程数量不一定能一直提升性能。

③设置nio2的运行模式:tomcat8默认的是nio的模式

调整JVM参数进行优化

接下来,通过调整JVM参数进行优化,其他tomcat参数与上面的保持一致:

最大线程数设置为500,启用nio2运行模式。

设置并行垃圾回收器

vi catalina.sh

将jvm参数添加进去--设置年轻代和老年代的垃圾收集器均为ParallelGC并行垃圾收集器。不设置jdk8默认也是使用ParallelGC:

修改完catalina.sh文件后,重启tomcat:

sh startup.sh && tail -f ../logs/catalina.out

gc日志存放目录: apache-tomcat-8.5.34/logs/gc.log 

测试结果比较接近,因为jdk8默认使用的也是ParallelGC垃圾收集器。

查看GC日志文件

apache-tomcat-8.5.34/logs/gc.log 文件上传到gceasy.io查看gc中是否存在问题:

只有在堆内存空间不足时才会触发FGC,FGC次数过高说明堆内存大小设置不合理。 

调整年轻代大小

vi catalina.sh

对比下之前的配置,将初始堆大小,年轻代大小均进行提升--

查看GC日志

可以看到GC次数明显减少,说明调整是有效的。

设置G1垃圾收集器

理论上而言,设置为G1垃圾收集器,性能是会提升的。但是会受制于多方面的影响,也不一定绝对有提升。

vi cataliina.sh文件:

小结

通过上述的测试,可以总结出,对tomcat性能优化就是需要不断地进行参数调整,然后测试结果,可能会调优也可能会调差,这时就需要借助于gc的可视化工具来看gc的情况。再帮助我们作出决策应该调整哪些参数。

发布了824 篇原创文章 · 获赞 369 · 访问量 79万+

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/104007940