记一次压力测试引起的系统响应时间过长、Tomcat服务出现服务连接拒绝问题的排查和调优

在行内做并发压力测试(300并发)的时候,我方系统出现了响应时间过长、Tomcat出现服务连接拒绝等问题

打开日志,看到本不耗时的代码块偶尔出现了耗时过长,初步分析是并发线程过多导致cpu频繁调度。经过用Jvisualvm和Jconsole进行实时Jvm监控,发现并发时线程数很高,内存使用急增,使用率几乎达百分之百,并且Gc频繁回收,cpu使用情况也急增到百分之七十左右。拉取Gc日志,并写Gc日志分析脚本,发现并发时频繁发生MinorGC。因此加大了项目运行时最大内存,加大了新生代内存,减少了Gc频率。服务连接拒绝是由于连接数超过了Tomcat的最大连接数,在此基础上对Tomcat参数进行了优化。初步调优后,已经不会再出现服务连接拒绝,Gc频繁也有所下降,但是cpu和内存使用率依然很高。使用Jvisualvm的抽样器,查看cpu和内存具体情况,发现有大量logger日志输出对象和转Xml用的Unmarshaller对象,再结合项目代码情况排查,原来是当时开发的时候为了方便排查错误,输出了多个log文件,Unmarshaller对象也没有用单例模式,使得高并发下创建大量对象来不及回收一直占用内存。再次调整之后,内存使用和Gc频繁也正常,cpu使用情况也降到了百分之二十五左右,并发响应时间成功达标了。

当时也是首次排查和解决这样的问题,看似短短的描述,实却顶住了很大的压力去想出排查和解决方案。对个人来讲是一个成长的过程。希望各位朋友遇到问题都能顺风顺水!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值