Linux下java进程CPU占用率高分析方法

在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况。这种情况发生时,我们怎么去找出原因并解决。

一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用

1. 通过top命令找到可疑进程PID

top – 09:37:18 up 70 days, 16:29, 2 users, load average: 1.13, 1.04, 0.97Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombieCpu(s): 1.0%us, 4.9%sy, 0.0%ni, 93.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.5%stMem: 2067816k total, 1756680k used, 311136k free, 236340k buffersSwap: 524284k total, 255508k used, 268776k free, 277040k cachedPID USERPR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND:39 java S :39.34 gam_server S :06.63 httpd:04.36 javaS :22.46 initS :00.00 kthreaddS :S :00.03 kworker/u:0

从上面命令中可以看出java进程CPU利用率一直保持100%,香港服务器,稳居不下,找到PID 24138

2. 找出消耗资源最高的线程

top -H -p 24138 可以不用第一步,直接执行命令 top -H ,香港虚拟主机,就可以查看到消耗资源最高的线程

top – 09:49:49 up 70 days, 16:41, 2 users, load average: 1.01, 1.04, 1.00Tasks: 72 total, 1 running, 71 sleeping, 0 stopped, 0 zombieCpu(s): 0.6%us, 1.3%sy, 0.0%ni, 97.7%id, 0.1%wa, 0.0%hi, 0.0%si, 0.2%stMem: 2067816k total, 1760840k used, 306976k free, 236744k buffersSwap: 524284k total, 253344k used, 270940k free, 279092k cachedPID USERPR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND:43 java:28.58 java:56.69 java:00.00 java

3. 查看这个线程所有系统调用

strace -p 24167

通过这3步基本可以找出什么原因导致java进程占用那么高CPU资源。

转自:

,网站空间如果说人生啊,尝过一回痛快淋漓的风景,

Linux下java进程CPU占用率高分析方法

相关文章:

你感兴趣的文章:

标签云: