首页 技术 正文
技术 2022年11月6日
0 收藏 387 点赞 498 浏览 1470 个字

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 cached  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND24138 apache    20   0 1273m 384m 3668 S 103.3 19.0   1232:39 java 3359 root      39  19  2704   36    0 S  0.3  0.0   4:39.34 gam_server 6696 root      20   0 34148 1604  244 S  0.3  0.1   5:06.63 httpd19254 root      20   0  785m 221m 3176 S  0.3 11.0   9:04.36 java    1 root      20   0  2224   28    0 S  0.0  0.0   1:22.46 init    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd    3 root      20   0     0    0    0 S  0.0  0.0   0:33.42 ksoftirqd/0    5 root      20   0     0    0    0 S  0.0  0.0   0: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 cached  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND24167 apache    20   0 1273m 384m 3688 R 99.1 19.0   1169:43 java24152 apache    20   0 1273m 384m 3688 S  2.0 19.0   0:28.58 java24188 apache    20   0 1273m 384m 3688 S  2.0 19.0   4:56.69 java24138 apache    20   0 1273m 384m 3688 S  0.0 19.0   0:00.00 java

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

strace -p 24167

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,023
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,360
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,143
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,774
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,852