一、问题
TPS上升波峰后直接下降到波谷,直到几乎没有服务。
二、问题定位
使用命令:jstat -gcutil ${PID} 5000查看jvm内存使用情况,发现jvm老年代利用率达到100%,如下图:
使用命令:jmap -histo:live ${PID} | head -n 20查看类占用内存情况,发现类org.apache.catalina.session.StandardSession内存占用较大,如下图:
三、原因
压测请求中没有JSESSIONID信息,导致每一个请求,tomcat容器都会创建一个新的session。1小时内300个线程并发访问,导致session暴涨,jvm老年代利用率达到100%,频繁的fullgc,服务器cpu暴增,tcp进入低谷。
四、优化方案
修改LoadRunner压测脚本,增加登录请求。
五、调优前后测试结果对比
调优前结果:
300并发压测1小时TPS曲线图:
调优后结果:
300并发压测1小时TPS曲线图: