线上应用诊断与调试利器——Arthas( 三 )


 
本次压力测试的过程中我们发现,当并发达到一定数量的时候系统会卡死,大量新的请求会超时 。使用dashboard查看发现系统的大量线程处于block或者wating中 。
 

线上应用诊断与调试利器——Arthas

文章插图
 
使用trace命令,将压力测试的方法进行监控,并保存到日志文件中,接着重新跑一轮压力测试 。
 
trace -n 150000 com.towngas.tcis.interfaces.nb.NbInfoServlet getService >> tt-2020-10-17-NbServlet-getService 
监控日志,当用户数达到500+的时候果然发现了问题
 
线上应用诊断与调试利器——Arthas

文章插图
 
继续使用trace命令跟踪,发现了可能出现问题的方法
线上应用诊断与调试利器——Arthas

文章插图
 
使用jad命令反编译该代码可以看到HttpClient并没有被立即关闭,使用release的释放后关闭通常没有问题,但是释放资源有一个过程通常是180秒,所以如果短时间有大量接口调用,会导致打开的socket连接数量超过系统设定值 。找到原因后问题得以顺利解决,压力测试得以顺利完成 。
 
线上应用诊断与调试利器——Arthas

文章插图
 
 
小结
 
本次的分享为大家介绍了Arthas的基本概念与基础的使用方法 。更为详细的使用方法、命令的更多参数,还请查看Arthas的官方文档 。
 
https://arthas.aliyun.com/doc/index.html
 
关于作者:李云涛,普元高级开发工程师,擅长性能调优、微服务、容器、消息队列等技术 。先后参与邮储银行Java开发平台、中移总ERP流程平台、中煤信息技术中台等平台的的架构设计与平台研发工作 。
 
关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享 。




推荐阅读