最近公司有一次服务器宕机,根据压测发现某些接口 QPS 只有 10 几。
看了下那些接口的业务逻辑,有大量的接口调用、数据组装,要是挨个加日志查耗时也太慢了。
想了想不如直接通过持续采样的方式看看线程的分布情况,如果没有问题的话,火焰图应该是比较均匀的分布,如果存在问题,应该会有比较多的线程都集中在某个方法上。
于是做了个小工具(
https://github.com/ZichunYang/jstack-2-flame-rs)
然后直接开始压测,持续采样了一段时间的 jstack 信息生成火焰图,发现大部分线程都卡在了跨中心调用的某几个方法中,于是向上反馈跨中心调用的性能问题,经过测试同事的压测发现果然是那几个接口 QPS 太低导致的。
故分享一下通过 jstack 可视化方案来高速识别性能瓶颈的方案。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/960560
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.