河池市网站建设_网站建设公司_内容更新_seo优化
2026/1/4 15:14:32 网站建设 项目流程

服务器CPU突然飙高,怎么快速定位到具体代码?

其实有套路可循,按这个流程走基本都能搞定。

先看是哪个进程

上去第一件事,top看一眼:

top

输出里重点看这行:

%Cpu(s): 85.2 us, 3.1 sy, 0.0 ni, 10.5 id, 0.0 wa, 0.0 hi, 1.2 si

us高说明是用户程序在吃CPU,wa高说明在等IO。如果us很高,基本就是业务代码的问题。

P排序,罪魁祸首一目了然:

PID USER %CPU %MEM COMMAND 12345 app 156.0 8.2 java -jar app.jar

好家伙,156%,跑满了一个半核心。

进程定位到了,但是哪个线程?

Java进程里几百个线程呢,得继续缩小范围:

top-H-p12345

-H显示线程级别。果然有个线程98%:

PID USER %CPU COMMAND 12367 app 98.0 java 12368 app 2.3 java

记下这个线程ID:12367

看线程在干啥

Java的话用jstack:

jstack12345>/tmp/thread.txt

但是jstack里线程ID是16进制的,先转换一下:

printf"%x\n"12367# 304f

然后搜:

grep-A30"nid=0x304f"/tmp/thread.txt

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询