您的位置:首页 > 运维架构 > Linux

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

2015-03-23 23:03 375 查看
在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况。这种情况发生时,我们怎么去找出原因并解决。 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用1. 通过top命令找到可疑进程PID
t
Tasks: 448total, 1 running, 447 sleeping, 0 stopped, 0 zombieCpu(s): 0.7%us, 0.4%sy, 0.0%ni, 98.6%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%stMem: 32862888ktotal, 32513500k used, 349388k free, 253228k buffersSwap: 4095992ktotal, 0k used, 4095992k free, 19249260k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND24138 apache 20 0 1273m 384m 3668 S 103.3 19.01 232:39 java32383 mysql 20 0 21.0g 6.6g 4752 S 10.6 21.1 75:50.50 mysqld10453 zabbix 20 0 230m 21m 19m S 2.0 0.1 8:47.81 zabbix_server10455 zabbix 20 0 230m 21m 19m S 2.0 0.1 8:47.02 zabbix_server10474 zabbix 20 0 135m 17m 15m S 1.7 0.1 5:41.90 zabbix_server10457 zabbix 20 0 230m 21m 19m S 1.3 0.1 8:49.65 zabbix_server10456 zabbix 20 0 230m 21m 19m S 0.7 0.1 8:53.36 zabbix_server10460 zabbix 20 0 135m 2024 1028 S 0.3 0.0 0:11.94 zabbix_server
从上面命令中可以看出java进程CPU利用率一直保持100%,稳居不下,找到PID 24138
2. 找出消耗资源最高的线程top -H -p 24138 可以不用第一步,直接执行命令top -H ,就可以查看到消耗资源最高的线程
3. 查看这个线程所有系统调用
strace -p 24167
通过这3步基本可以找出什么原因导致java进程占用那么高CPU资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Linux 资源