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

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

文章插图
继续使用trace命令跟踪,发现了可能出现问题的方法

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

文章插图
小结
本次的分享为大家介绍了Arthas的基本概念与基础的使用方法 。更为详细的使用方法、命令的更多参数,还请查看Arthas的官方文档 。
https://arthas.aliyun.com/doc/index.html
关于作者:李云涛,普元高级开发工程师,擅长性能调优、微服务、容器、消息队列等技术 。先后参与邮储银行Java开发平台、中移总ERP流程平台、中煤信息技术中台等平台的的架构设计与平台研发工作 。
关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享 。
推荐阅读
- 下一代视频编码技术的云视频应用探索
- 腾讯云快直播——超低延迟直播技术方案及应用
- python:栈的理解与应用
- 光纤收发器的应用与讲解
- 教您使用Win10“查看可靠性历史记录”快速诊断电脑故障
- 2020年部署Web应用的4种方式
- 到底什么是Hash?Hash算法的原理和实际应用讲解
- 适用于任何设备的屏幕共享应用程序–Mirroring360
- SpringBoot运行源码分析:Spring应用上下文准备
- ICMP协议及应用
