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

【Arthas】火焰图优化应用CPU(问题原因:获取调用栈)

优化场景总结归纳

1. 问题背景
  • 现象:在公共搜索功能中,火焰图分析发现 获取Java调用栈(StackTrace 占用了约 6%的CPU(日常流量下),系统高负载时占比更高。
  • 原因
    • 每次外部API调用时,代码会 主动获取当前调用栈(如 Thread.currentThread().getStackTrace()),目的是记录调用来源,便于日志排查。
    • 获取调用栈的操作本身比HSF调用更耗时,成为性能瓶颈。
2. 优化方案
  • 根本原因获取调用栈是同步阻塞操作,涉及JVM遍历线程栈帧,性能开销大(尤其在频繁调用的场景)。
  • 优化措施
    1. 移除冗余的调用栈获取逻辑
      • 原代码在日志中记录调用来源,但实际可通过其他方式实现(如HSF Filter)。
    2. 改用HSF Filter机制
      • HSF本身支持 Filter链,可在调用前后注入逻辑,无需手动获取调用栈。
      • 通过Filter记录调用信息(如来源服务、方法名等),避免性能损耗。
3. 优化收益
  • CPU占用下降:消除6%的额外开销,高流量时收益更显著。
  • HSF调用耗时降低:减少不必要的同步阻塞操作,提升整体吞吐量。
  • 代码可维护性提升
    • 调用栈逻辑与业务解耦,通过Filter统一管理。
    • 日志排查仍可通过HSF上下文(如RPC Context)获取关键信息,无需侵入式代码。
4. 适用场景

此类优化适用于以下情况:

  • 高频调用链路的性能敏感代码(如RPC框架、中间件核心逻辑)。
  • 依赖调用栈分析的场景(如日志、监控、链路追踪),但需权衡性能与可观测性。
  • 存在更高效的替代方案(如框架原生支持上下文传递,避免手动获取栈信息)。
5. 经验总结
  • 避免在关键路径调用 getStackTrace
    • 此操作在Java中属于 重操作,尤其在深调用栈或高并发场景下。
  • 优先使用框架提供的上下文机制
    • 如HSF Filter、RPC Context、ThreadLocal等,避免重复计算。
  • 火焰图(Flame Graph)是性能分析的利器
    • 能直观定位CPU热点,帮助发现隐藏的性能问题(如本案例中的调用栈开销)。
6. 后续建议
  • 监控优化效果:对比优化前后的CPU占用、HSF调用耗时等指标。
  • 推广类似优化模式:检查其他场景是否也存在冗余的调用栈获取逻辑(如日志组件、AOP拦截器等)。
http://www.xdnf.cn/news/3684.html

相关文章:

  • C语言字符函数和字符串函数详解:从基础到实战
  • C语言奇幻指南:宏、头文件与变量的秘密世界
  • 二、机器学习中Python变量基础
  • 防范反序列化攻击:如何安全处理敏感数据序列化
  • 【C/C++】MQTT
  • Git从入门到精通-第三章-获取Git仓库
  • 【Agent搭建】利用coze平台搭建一个AI销售?
  • Spring MVC @RequestBody 注解怎么用?接收什么格式的数据?
  • 重载和覆写有什么区别?
  • 18、状态库:中央魔法仓库——React 19 Zustand集成
  • STM32基础教程——软件I2C
  • 力扣-字符串-165 比较版本号
  • 【算法基础】递归算法 - JAVA
  • C++ STL vector容器详解:从原理到实践
  • Python绘制地球的重力地图
  • <servlet-class>和</url-pattern>的作用
  • Oracle VirtualBox 在 Windows 上的详细安装步骤
  • AnimateCC教学:照片旋转飞舞并爆炸....
  • NV189NV195美光固态闪存NV197NV199
  • 什么是“原子变量”?
  • 【vscode】.dart文件没有错误波浪线
  • Dubbo(93)如何在电商系统中应用Dubbo?
  • Power Query精通指南4:M语言(查询结构与值系统)、查询优化、自动刷新
  • rails 8 CSS不起效问题解决
  • 异步数据库事务锁:电商库存扣减的防超卖秘籍
  • 【Linux系统篇】:Linux线程控制基础---线程的创建,等待与终止
  • Tesla的战略变化策略(2010~2024)以及给中国汽车厂家的启发
  • Deformable DETR模型解读(附源码+论文)
  • 【算法基础】快速排序算法 - JAVA
  • Cycleresearcher:通过自动化评审改进自动化研究