java cpu_JAVA定位CPU占用率高
一、top命令定位cpu占用率高的进程号(pid),找到pid后,top -p pid -H,记录出cpu占用率高的线程号(tid),用printf "%x\n" tid将其转换为16进制
二、使用jstack打印进程信息,为准确定位可以多来几次,jstack pid > pid_1.log
三、打开日志文件,找到十六进制的线程信息,可定位到具体类的某一行。
示例
1、
1 Tasks: 546 total, 1 running, 544 sleeping, 0 stopped, 1zombie2 Cpu(s): 15.3%us, 0.1%sy, 0.0%ni, 84.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st3 Mem: 24633804k total, 23710152k used, 923652k free, 784472k buffers4 Swap: 32764556k total, 127120k used, 32637436k free, 7000668k cached5
6 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND7 25930 weblogic 18 0 5311m 4.5g 29m S 488.1 19.3 35663:17java8 16830 weblogic 15 0 13168 1472 824 R 0.7 0.0 0:00.04top9 13834 weblogic 16 0 13028 1424 812 S 0.3 0.0 5900:50top10 17263 weblogic 23 0 2410m 1.5g 28m S 0.3 6.2 390:24.31java11 17438 weblogic 25 0 3429m 1.7g 25m S 0.3 7.2 217:35.39java12 26316 weblogic 23 0 4695m 2.5g 29m S 0.3 10.8 31:47.38java13 1 root 15 0 10372 600 568 S 0.0 0.0 2:12.76init14 2 root RT -5 0 0 0 S 0.0 0.0 22:18.89 migration/0
15 3 root 34 19 0 0 0 S 0.0 0.0 2:38.19 ksoftirqd/0
16 4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
17 5 root RT -5 0 0 0 S 0.0 0.0 19:16.83 migration/1
18 6 root 34 19 0 0 0 S 0.0 0.0 6:37.27 ksoftirqd/1
19 7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
20 8 root RT -5 0 0 0 S 0.0 0.0 11:11.42 migration/2
21 9 root 34 19 0 0 0 S 0.0 0.0 6:59.29 ksoftirqd/2
22 10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
23 11 root RT -5 0 0 0 S 0.0 0.0 5:36.90 migration/3
进程号 为25930的java进程cpu使用率很高,top -p 25930 -H
1 Tasks: 220 total, 1 running, 219 sleeping, 0 stopped, 0zombie2 Cpu(s): 8.7%us, 0.1%sy, 0.0%ni, 91.2%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st3 Mem: 24633804k total, 23712492k used, 921312k free, 784472k buffers4 Swap: 32764556k total, 127120k used, 32637436k free, 7000868k cached5
6 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND7 25960 weblogic 15 0 5311m 4.5g 29m S 51.9 19.3 5615:15java8 25941 weblogic 16 0 5311m 4.5g 29m S 15.0 19.3 798:46.36java9 25939 weblogic 15 0 5311m 4.5g 29m S 11.3 19.3 798:26.28java10 25951 weblogic 15 0 5311m 4.5g 29m S 11.3 19.3 799:05.00java11 25936 weblogic 15 0 5311m 4.5g 29m S 11.0 19.3 799:14.41java12 25937 weblogic 15 0 5311m 4.5g 29m S 11.0 19.3 798:37.65java13 25943 weblogic 15 0 5311m 4.5g 29m S 11.0 19.3 799:30.19java14 25944 weblogic 15 0 5311m 4.5g 29m S 11.0 19.3 799:58.25java15 25945 weblogic 15 0 5311m 4.5g 29m S 11.0 19.3 798:56.29 java
tid为25960的线程cpu使用率很高。
1 [weblogic@shtpeb2b2eapp01 adminserver]$ printf "%x\n" 25960
2 6568
2、使用jstack打印进程信息并导入日志文件
jstack 25930 >25930_1.log
jstack 25930 >25930_2.log
jstack 25930 >25930_3.log
3、查看相关日志信息
1 [weblogic@shtpeb2b2eapp01 bin]$ grep -A 10 0x656825930_1.log2 "Concurrent Mark-Sweep GC Thread" prio=10 tid=0x0000000048b59000 nid=0x6568runnable3 "Gang worker#0 (Parallel CMS Threads)" prio=10 tid=0x0000000048b4f000 nid=0x6563runnable4
5 "Gang worker#1 (Parallel CMS Threads)" prio=10 tid=0x0000000048b51000 nid=0x6564runnable6
7 "Gang worker#2 (Parallel CMS Threads)" prio=10 tid=0x0000000048b53000 nid=0x6565runnable8
9 "Gang worker#3 (Parallel CMS Threads)" prio=10 tid=0x0000000048b54800 nid=0x6566runnable10
11 "Gang worker#4 (Parallel CMS Threads)" prio=10 tid=0x0000000048b56800 nid=0x6567runnable12
13 [weblogic@shtpeb2b2eapp01 bin]$ grep -A 10 0x656825930_2.log14 "Concurrent Mark-Sweep GC Thread" prio=10 tid=0x0000000048b59000 nid=0x6568runnable15 "Gang worker#0 (Parallel CMS Threads)" prio=10 tid=0x0000000048b4f000 nid=0x6563runnable16
17 "Gang worker#1 (Parallel CMS Threads)" prio=10 tid=0x0000000048b51000 nid=0x6564runnable18
19 "Gang worker#2 (Parallel CMS Threads)" prio=10 tid=0x0000000048b53000 nid=0x6565runnable20
21 "Gang worker#3 (Parallel CMS Threads)" prio=10 tid=0x0000000048b54800 nid=0x6566runnable22
23 "Gang worker#4 (Parallel CMS Threads)" prio=10 tid=0x0000000048b56800 nid=0x6567 runnable
从输出信息来看,此线程是JVM的GC线程,此时可以基本确定是内存不足或内存泄露导致gc线程持续运行,导致CPU占用过高。
所以接下来我们要找的内存方面的问题。
1 [weblogic@shtpeb2b2eapp01 bin]$ jstat -gcutil 25930 2000 10
2 S0 S1 E O P YGC YGCT FGC FGCT GCT3 0.00 0.00 94.78 100.00 87.22 1035 92.722 251436 158050.083 158142.805
4 0.00 0.00 94.78 100.00 87.22 1035 92.722 251437 158050.083 158142.805
5 0.00 0.00 94.78 100.00 87.22 1035 92.722 251438 158051.345 158144.067
6 0.00 0.00 94.79 100.00 87.22 1035 92.722 251438 158052.279 158145.001
7 0.00 0.00 94.79 100.00 87.22 1035 92.722 251439 158052.279 158145.001
8 0.00 0.00 94.79 100.00 87.22 1035 92.722 251440 158053.553 158146.275
9 0.00 0.00 94.79 100.00 87.22 1035 92.722 251440 158054.475 158147.197
10 0.00 0.00 94.79 100.00 87.22 1035 92.722 251441 158054.475 158147.197
11 0.00 0.00 94.79 100.00 87.22 1035 92.722 251441 158055.753 158148.475
从输出信息可以看出,Eden区内存占用95%,Old区内存占用100%,根据这些信息,基本可以确定是程序代码上出现了问题,可能存在不合理创建对象的地方。
使用文档编辑器打开日志
发现大量的线程等待以及被锁住的资源,然后丢给相关开发同事
java cpu_JAVA定位CPU占用率高相关推荐
- 如何定位cpu占用率高的java线程
如何定位cpu占用率高的java线程 工具: 1 jstack:jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&q ...
- jstack定位CPU占用率高的线程代码
目录 一.背景 二.jstack定位实战演示 三.关于线程的状态 四.最后 一.背景 性能测试过程中,如果我们发现应用服务器CPU使用率高(超过70%),接口TPS低的现象,此时常见的情况是由以下的原 ...
- 服务器定位cpu高占用率代码php,面试官:线上服务器CPU占用率高如何排查定位问题?,...
面试官:线上服务器CPU占用率高如何排查定位问题?, 国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果 ...
- 一次服务器CPU占用率高的定位分析
背景 通过性能监控发现上线服务器cpu某核占用率已经达到了100%,而且是由我们的某个核心服务导致的.幸亏由于我们的服务进程由多个相同worker(线程)调度承担的,所以除了CPU占用率高之外,并没有 ...
- netty cpu 占用率 高_交换机CPU使用率高问题定位
诊断工具 display工具 log工具 报文冲击导致的CPU使用率高问题 CPU使用率高问题信息采集 诊断工具 display cpu-usage [ slot x ] display cpu-de ...
- Java CPU占用率高分析
首先,通过top命令找出CPU占用率高的进程: 然后,通过ps -o THREAD,tid,time -mp 2066命令找出执行时间最长的线程的TID 将有问题的TID转为16进制格式: print ...
- 原创|面试官:线上服务器CPU占用率高如何排查定位问题?
国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果显示如下: 排名前几的比较受重视的能力分别为:解决问题 ...
- 服务器cpu占用率高怎么解决,线上服务器CPU占用率高怎么办?
如果线上服务器发生CPU占用率高时,应该如何排查并定位问题. 1.问题发现 本文整理自一个真实的案例,是楼主负责的业务,在一次大促之前的压测时发现了这个问题. 在每次大促之前,我们的测试人员都会对网站 ...
- 面试官:线上服务器CPU占用率高如何排查定位问题?
开发十年,就只剩下这套架构体系了!! 国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果显示如下:  ...
- 线上服务器CPU占用率高如何排查定位问题?
(关联着看看这篇文章:https://blog.csdn.net/u011277123/article/details/103768939) 解决问题的能力以超高比例排名第一,这也是为什么很多面试过程 ...
最新文章
- Java网络编程笔记2
- python爬取知乎热搜_python爬取知乎评论
- Android Studio项目转Eclipse项目
- linux php7 yum 卸载,Linux_在Centos中yum安装和卸载软件的使用方法,安装一个软件时 
yum -y install h - phpStudy...
- iphone桌面上的圆圈怎么设置_iPhone的备忘录如何排序?什么便签可以更改排列展示顺序...
- 1. Magento2 --- (1) theme ---create a theme
- 【无机纳米材料科研制图——OriginLab 0204】Origin细胞存活率柱状图绘制
- 光伏发电系统红外热图像(227幅图像,无标签,可用于识别蜗牛尾迹与热点故障)
- nyoj234 吃土豆
- 2020 微信头像圣诞帽来啦,快给 TA 戴帽子吧~
- 下载加速小妙招,我不允许你不知道
- php 58房源采集,如何用火车采集器采集二手房数据
- Jquery版本对IE浏览器的支持
- Scp全量远程拷贝(推送、拉取)
- javacore日志分析工具jca
- LS1028修改调试串口
- 基于大数据的保险商业模式
- 【博学谷学习记录】超强总结,用心分享|大数据之数仓分层
- laravel多库操作
- 3D向量叉乘的理解和记忆