切换主题
排查线上环境CPU占用过高
查看占用情况
shell
top
top 命令是 Linux 和类 UNIX 系统中用于实时监控系统性能的工具。它提供了关于系统运行状态、CPU 和内存使用情况、正在运行的进程等信息。以下是一些关于 top 命令的重要概念和用法:
顶部信息:top 命令输出的顶部部分显示系统的基本信息,包括系统时间、系统运行时长、当前登录用户数、负载平均值(load average),以及 CPU 和内存使用情况。
进程列表:下面部分显示系统上正在运行的进程,默认按 CPU 使用率排序。你可以看到每个进程的 PID、用户、优先级、虚拟内存和常驻内存使用量、CPU 使用率、内存使用率等信息。
交互式操作:top 命令是交互式的,你可以在运行过程中进行操作。以下是一些常用的交互式命令:
- 按
q
退出 top。 - 按
h
查看帮助。 - 按
k
输入要终止的进程 ID。 - 按
r
更改进程的优先级(优先级越低,进程优先级越高)。 - 按
f
或 F 调整显示的字段。 - 按
o
重新排序进程列表。 - 按
s
调整刷新频率。
定位到具体的线程
通过上面我们可以定位的进程的ID为15244,接下来我们要定位到该进程的哪个线程占用CPU比较高,使用如下命令,其中15244为进程ID。
shell
top -Hp 15244
此时可以定位到是线程15253、15249、15251……占用CPU比较高
输出16进制线程ID
将线程号(15253)转为16进制(后面用)
shell
printf ‘0x%x\n’ 15253
定位线程调用栈
通过以下命令把定位的进程线程调用栈保存下来,其中929为进程ID
shell
jstack 15244 > 15244.log
打开日志文件,查找0x3b95n
查看问题所在
未完待续