当前位置: 首页 > news >正文

async-profiler火焰图找出耗CPU方法

事情起于开发应用对依赖的三方包(apache等等)进行了升级后(主要是升级spring),CPU的使用率较原来大幅提升,几个应用提升50%-100%。

查找半天,对比每次版本的cpu火焰图,看不出有什么不同,找不出cpu是哪些方法消耗了更多。(图中右下角有GC的方法,可能占比cpu总消耗太小了,真看不出什么)

局限于async-profiler采样的原理,cpu火焰图只能通过对比找出使用cpu高方法,方法占用的宽度越大,说明使用的cpu比率越大,就是消耗CPU的大户。

但,如果所有的方法是几乎等比例地提高了cpu使用率,那就无法判断是什么方法占用了更多的cpu了!如apache.commom; HashMap等,这些方法在火焰图的最上方部分,是java比较底层的方法。

===================================

突破的线索起于看到jstat -gcutil pid结果,在GCT这列看到总的消耗时间较前版本明显多了。(20分钟的压测明显多了1-2秒),没有FullGC,完全是YGC消耗了。

于是我意识到,肯定是JVM创建回收的对象多了!

于是我想到使用async-profiler 的alloc的模式,对不同的包进行采样,得出下面两图,原因就找到了。

cpu mode下的GC,确实没看出什么。

如下两图是alloc采样:

相关文章:

  • # 04_Elastic Stack 从入门到实践(四)--2
  • Docker 设置镜像源后仍无法拉取镜像问题排查
  • postman莫名奇妙报错,可能是注释引起的。postman 过滤请求体中的注释。
  • Oracle 19c部署之数据库软件安装(二)
  • 细说STM32单片机FreeRTOS任务管理API函数及多任务编程的实现方法
  • 深入了解v-model的原理:v-model拆分为value属性和input事件,表单类组件的封装并用v-model简化代码
  • 【python画图】:从入门到精通绘制完美柱状图
  • 【Qt】初识Qt(一)
  • 4.15【Q】netsafe
  • 量化交易 - 布林带(Bollinger Bands)策略研究 - 源码
  • 智能制造中如何进行智能工厂三年规划设计?【附全文阅读】
  • 双指针算法(二)
  • 【系统搭建】DPDK实现两虚拟机基于testpmd和l2fwd的收发包
  • C++之类模板
  • 基于AI大语言模型的历史文献分析在气候与灾害重建领域中的技术应用
  • 对抗生成进化:基于DNA算法的AIGC检测绕过——让AI创作真正“隐形“
  • ubtuntu安装docker拉取iwebsec镜像
  • 智慧矿山数字孪生解决方案:技术剖析与实践
  • Windows快速切换屏幕/桌面
  • java基础练习DEMO
  • 专访 | 杜普兰蒂斯:爱上中国文化,下一步努力提升速度
  • 东风着陆场做好各项搜救准备,迎接神舟十九号航天员天外归来
  • 北大深圳研究生院成立科学智能学院:培养交叉复合型人才
  • 以“最美通缉犯”为噱头直播?光明网:违法犯罪不应成网红跳板
  • 葡萄牙总理:未来几小时内将全面恢复供电
  • 王毅会见俄罗斯外长拉夫罗夫