目录
使用步骤
查看GC日志
小结
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的情况。再帮助我们作出决策应该调整哪些参数。