【性能定位】cpu占用率过高问题排查
问题:公司一个系统在测试单个功能登录上,并发才5个用户时,CPU使用率就瞬间飙升到100%
排查过程:
1、首先查看系统资源占用信息,使用top命令,查看那个进程占用CPU高
发现正在运行的JAVA项目CPU占用率很高,百分之364.2了,那么问题一定出在这个程序中
2、通过 top -H -p pid 找到导致cpu高的线程
备注:也可以通过Ps -mp pid -o THREAD,tid,time查看
在这里可能会出现三种情况:
- 第一种情况,某个线程一直CPU利用率100%,则说明是这个线程有可能有死循环,那么请记住这个PID。
- 第二种情况,某个线程一直在TOP十的位置,这说明这个线程可能有性能问题。
- 第三种情况,CPU利用率TOP几的线程在不停变化,说明并不是由某一个线程导致CPU偏高。
如果是第一种情况,也有可能是GC造成,我们可以用jstat命令看下GC情况,看看是不是因为持久代或年老代满了,产生Full GC,导致CPU利用率持续飙高,命令如下。
[test@iZ8vb8rrw7wiwqwx22tcsrZ log]$ jstat -gcutil 377 1000 5S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 26.33 11.63 11.99 97.36 93.41 63 2.600 5 2.399 4.9980.00 26.33 25.30 11.99 97.36 93.41 63 2.600 5 2.399 4.9980.00 26.33 40.19 11.99 97.36 93.41 63 2.600 5 2.399 4.9980.00 26.33 53.16 11.99 97.36 93.41 63 2.600 5 2.399 4.9980.00 26.33 65.35 11.99 97.36 93.41 63 2.600 5 2.399 4.998
3、定位线程具体问题,将TID转换成16进制,通过printf '0x%x' tid
命令,因为线程堆栈情况记录的是线程的16进制id:
[test@iZ8vb8rrw7wiwqwx22tcsrZ log]$ /usr/bin/printf '0%x\n' 12095
02f3f
4、jstack pid | grep tid
找到线程堆栈
jstack 11572 | grep 02f3f -A 30
分析:
(1)查看下TCP连接状态
[test@iZ8vb8rrw7wiwqwx22tcsrZ log]$ netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n1 established)1 Foreign7 LISTEN111 ESTABLISHED
(2)用jstack dump看看这些线程都在做什么
也可以将线程dump出来,看看究竟是哪个线程,执行什么代码造成的CPU利用率高。执行以下命令,把线程dump到文件dump01里。
jstack 11572 > dump01
(3)统计下所有线程分别处于什么状态
[test@iZ8 ~]$ grep java.lang.Thread.State dump01 | awk '{print $2$3$4$5}' | sort | uniq -c8 RUNNABLE26 TIMED_WAITING(onobjectmonitor)40 TIMED_WAITING(parking)4 WAITING(onobjectmonitor)52 WAITING(parking)
(4)查看处于WAITING(parking)的线程信息
后续待定。。。。。
- 查看Java线程数 ps -eLf | grep java -c
【性能定位】cpu占用率过高问题排查相关推荐
- linux cpu不足处理运维,Linux运维知识之Linux服务器CPU占用率较高问题排查思路
本文主要向大家介绍了Linux运维知识之Linux服务器CPU占用率较高问题排查思路,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 注意:本文相关配置及说明已在 CentOS ...
- java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查
前言:小编总结了之前生产环境cpu 占用率过高等问题,小编功力不够深厚,文章如有不对的地方,还望各位大神指正. 排查原因:客服反馈说系统访问缓慢 一. 在排查问题的过程中针对 CPU 的问题, 使用以 ...
- Linux 系统 CPU 占用率较高问题排查思路
CPU负载查看方法: 使用vmstat查看系统维度的CPU负载 使用top查看进程维度的CPU负载 https://blog.csdn.net/lufeisan/article/details/531 ...
- cpu满了卡住 linux_Linux系统中CPU占用率较高问题排查思路与解决方法
前言 作为 Linux 运维工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失. 很多运维的同学 ...
- linux 使cpu使用率升高_Linux系统中CPU占用率较高问题排查思路与解决方法
Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行: CPU利用率.根据经验来看,用户空间进程占用CPU比例在 65-70%之间,内核(系统) ...
- 内存或者 cpu 占用率过高如何排查
排查原因:客服反馈说系统访问缓慢 一. 在排查问题的过程中针对 CPU 的问题, 使用以下命令组合来排查问题 模拟过程: ①示例代码: package com.sunxxx.task;import o ...
- jstack定位CPU占用率高的线程代码
目录 一.背景 二.jstack定位实战演示 三.关于线程的状态 四.最后 一.背景 性能测试过程中,如果我们发现应用服务器CPU使用率高(超过70%),接口TPS低的现象,此时常见的情况是由以下的原 ...
- 如何定位cpu占用率高的java线程
如何定位cpu占用率高的java线程 工具: 1 jstack:jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&q ...
- compattelrunner.exe占用磁盘过高_Linux 系统 CPU 占用率太高?
在使用Linux 系统时,经常会遇到 CPU 占用率太高的问题.此篇文章教你如何解决,排查解决的思路是什么 CPU负载查看方法: 使用vmstat查看系统维度的CPU负载 使用top查看进程维度的CP ...
最新文章
- 如何看懂照片的直方图
- ArrayList、LinkedList和Vector
- 困恼的mappedBy
- 2019编译ffepeg vs_2020/5-Win10下ffmpeg最简编译方法
- 3层vni vxlan_VXLAN技术:三层网络构建虚拟的二层网络
- MySQL流浪记(二)—— MySQL介绍及其特性
- Flutter中使用友盟统计
- <EDEM 基础案例02>Rock Box
- matlab 单相整流电路,MATLAB的单相桥式整流电路研究
- 《好好学习·成甲》教你如何学习学习
- 关于电子科技大学大学生早自习情况调查
- 安装Sublime Text 3插件的方法:
- 查询mysql数据库中各shema中的表数量【存储过程】
- python后端工程师岗位职责_【PYTHON后端开发工程师岗位职责_PYTHON后端开发工程师职责/工作内容】-猎聘岗位职责频道...
- 3D建模师的需求到底有多大?以前想都不敢想
- 数据库设计-SQL Server开发实现学习
- 如何创建dblink
- win10无线投屏_miracast投屏的未来
- EXCEL中阿拉伯数字版转成汉语大写代码
- Activity软盘配置
热门文章
- Spark 机器学习 概括统计 summary statistics [摘要统计]
- java课程设计-多人聊天工具(socket+多线程)
- HTML5重构互联网:浏览器将部分替代操作系统
- c语言扫雷游戏策划文档,扫雷游戏程序设计课设计报告.doc
- 第K小元素 时间复杂度n
- python timedelta对象_python timedelta函数是什么?
- 爱奇艺快手采购量大涨,迅雷云计算业务前景看好
- C++常用数学运算(待完结)
- Java线程安全集合总结
- 【Paddle打比赛】基于PaddleNLP法研杯2022 -犯罪事实实体识别