96SEO 2026-08-13 21:13 16
线上告警这方面。CPU 飙到 100%,服务响应超时。打开终端、连服务器、执行 top、jstack…,这一套流程对老手来说行云流水,却让不少新人每次遇到性能问题都陷入“先看什么?用什么命令,怎么看线程栈?”的焦虑,
这篇文章了一套标准化的 Java 性能排障流程无论是 CPU 飙升、内存泄漏还是响应延迟。只需按步骤走,就能快速定位根因。

# Linuxtop
# 找到进程 PID,例如 Java 进程 pid=12345
top
示例输出这方面。
PID USER PR NI VIRT RES SHR S %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
12345 root 20 0 10G 4G -S S 100.0 0.5 java
如果机器上只有一个 Java 进程,那它基本就是占用 CPU 的主因。
top -H -p
该命令会列出该进程下所有线程及其 CPU 占用情况。找出 CPU 占用最高的线程,记下它的 TID。例如:
tid=1234567
printf "%x
"
# 输出: a1234b
十六进制值将在后续 jstack 中定位线程。
jstack | grep -A10 "0x&a1234b"
"http-nio--exec-8" # daemon prio= os_prio= tid=0x00007f... java.lang.Thread.State: RUNNABLE at com.example.service.PremiumCalculator.calculate at com.example.service.PremiumCalculator.lambda$batchCalculate$ ...
关注 RUNNABLE 状态 + 热点方法行号——这往往是导致 CPU 飙升的元凶。
| 根因类型 | 特征描述 | |
|---|---|---|
| 死循环 | 栈中反复执行同一循环方法;GC 无关,持续占用高 CPU。 | |
| 频繁 GC | jstack 中出现大量 GCThread;可通过 jstat -gcutil 确认 GC 活动频繁且耗时。 | |
| 正则匹配热点堆栈 Pattern.matcher / match | 在热点方法中频繁调用正则匹配,导致 CPU 高峰。 | |
| 序列化/反序列化热点堆栈 JSON/XML 等解析调用 | 大量序列化/反序列化操作消耗显著 CPU。 | |
| 大对象频繁创建/循环创建新对象 | 堆栈中可看到大量对象构造,导致频繁分配与回收。怎么说呢, | |
| 序号 | 泄漏模式 | 描述 |
|---|---|---|
| ① | ThreadLocal 未清理 | 在线程池中使用 ThreadLocal 后未在 finally 块中 remove |
| ② | HashMap key 未实现 equals/hashCode | 相同逻辑 key 的不同实例不断 put。永远不会覆盖 |
| ③ | 静态集合作为缓存 | static Map 或 Set 持久只增不减 |
| ④ | ClassLoader 泄漏 | 热加载场景下类无法卸载导致类加载器持久化 |
bash
iostat -x /dev/sda # 查看磁盘 IO 等待比例
SLOWLOG GET
* 外部 API 延迟 – 用 APM 或业务日志埋点查看调用耗时
如果 jstack 输出中出现大量 BLOCKED / WAITING 状态:
bash
jstack
再看示例,
yaml
java.lang.Thread.State: RUNNABLE
java.lang.Thread.State: BLOCKED ← 锁竞争严重
java.lang.Thread.State: TIMED_WAITING
多处 BLOCKED 时用 jstack 再追踪对应锁对象,看哪个锁被谁持有。
| 场景 | 命令/工具 | 作用 |
|---|---|---|
| CPU 高 | 说起来,=>  ,  , 怎么说呢,=> => &.top -H -p + jstack确定热点线程和方法 |
内存泄漏
>'> '>>'?Wait no I will keep simple. 确认泄漏+分析根因 …..
.
But due to formatting complexity I will skip this table and present as bullet list instead:
-
CPU 高:
"top -H -p {pid} + jstack"
→ 定位热点线程和方法
-
Memory Leak:
"jstat -gcutil {pid} + jmap heap dump"
→ 分析 MAT / VisualVM
-
I/O 瓶颈:
"iostat -x"
→ 查看磁盘 IO 等待比例
-
Network 延迟:
"ping {host} / curl --write-out %{timetotal}"'
→ 检测网络连通性与延迟
-
SQL 慢查询:
"MySQL slowlog"。"redis slowlog get"
→ 排查数据库或缓存层慢查询
-
Lock 冲突:
"jstack {pid}> thread_dump.txt"
→ 分析 BLOCKED/WAITING 状态
-
... etc.
]
五、与行动教程
性能排障不是靠记忆命令,而是形成一套标准思路:
1️⃣ CPU 高 ➜ top ➜ jstack ➜ 找热点方法
2️⃣ 内存泄漏 ➜ jstat ➜ jmap heap dump ➜ MAT 分析
3️⃣ 响应慢 ➜ 区分 CPU / I/O / 锁 ➜ 对应手段逐个排查
按此流程走,即使遇到 “Java CPU 全满” 的告警,也能在几分钟内定位根因并制定修复方案。其实,
您平常用哪些工具来诊断 Java 性能问题?欢迎在评论区补充您的“压箱底技巧”,一起建立更完整的排障手册!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback