# Arthas Cpu High

> 排查 JVM / 应用 CPU 飙高（线程定位 + 代码路径分析）

- Skill: `alibaba/arthas-cpu-high` (Agent Skill)
- Install (CLI): `npx skillmds@latest add alibaba/arthas-cpu-high`
- Raw SKILL.md: https://api.skillmd.com/api/skills/alibaba/arthas-cpu-high/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: alibaba (https://skillmd.com/u/alibaba)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/alibaba/arthas-cpu-high

---


# JVM CPU 飙高排查指南（Arthas）

适用场景：机器 CPU 飙高、应用响应变慢、负载异常升高。

原则：先用低风险工具定位「哪个线程在忙」，再逐步缩小到「哪个方法/代码路径」。

## 1) 先确认当前 JVM 整体状态（低风险）

- 使用 `dashboard` 查看 CPU/线程/GC 概况（建议设置有限次数）：
  - 关注：CPU、线程数、GC 次数/耗时是否异常。

## 2) 定位最忙线程（关键步骤）

- 使用 `thread` 找出最忙的前 N 个线程并打印堆栈：
  - 例如：`topN=3` 或 `topN=5`
- 记录每个热点线程的 `threadId` 与堆栈关键方法名（可用 `take_notes` 记录证据）。

判断方向：
- 如果堆栈显示在 `java.util.regex`、JSON 序列化、日志格式化等：可能是 CPU 密集计算。
- 如果堆栈显示在锁竞争：继续看是否有大量 `BLOCKED`，并考虑用 `thread(blocking=true)` 找出阻塞源头线程。

## 3) 进一步确认热点方法的调用路径（按需、有限制）

当热点线程堆栈指向某个「可疑方法」时：
- 优先使用 `stack` / `trace` 针对该方法做路径确认（避免宽泛匹配）。
- 如果需要观测入参/返回值，再考虑 `watch` 或 `tt`，并设置合理的执行次数与超时，避免对线上造成压力。

## 4) 输出诊断结论

报告至少包含：
- 现象与证据：dashboard 摘要 + topN 线程堆栈关键片段
- 初步结论：CPU 主要消耗在什么类型的逻辑（计算/锁/GC/日志等）
- 下一步：建议进一步 trace/watch 的目标方法（给出类名+方法名的精确范围），或建议用户提供主包名/关键接口信息以继续收敛


