解决过程:
1,根据top命令,发现PID为7137的Java进程占用CPU高达200%,出现故障。

2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
显示结果如下:
[app100657741@qxtx-s20-246 ~]$ ps -mp 7137 -o THREAD,tid,time  
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
25438    14.2   -    - -         -      -     - 00:02:23
25438     0.0  19    - futex_    -      -  7137 00:00:00
25438     3.4  19    - futex_    -      -  7138 00:00:34

或者

[app100657741@qxtx-s20-246 ~]$ top -H -p 7137

top - 13:24:41 up 17 min, ? users,  load average: 0.15, 0.17, 0.10
Tasks:  68 total,   0 running,  68 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.4%us,  0.8%sy,  0.0%ni, 91.2%id,  0.4%wa,  0.0%hi,  0.0%si,  1.2%st
Mem:   4051060k total,  2523676k used,  1527384k free,     7060k buffers
Swap:  2097144k total,        0k used,  2097144k free,   145776k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                    
7220 app10065  20   0 4780m 2.0g  12m S  2.0 52.1   0:05.53 java                                                                                                      
7224 app10065  20   0 4780m 2.0g  12m S  2.0 52.1   0:05.24 java

找到了耗时最高的线程,占用CPU最大的!

将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 7220
1c34

最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep 1c34 -A 30

[root@localhost logs]#jstat -gcutil 5342 1000 300   #可以显示gc的信息,查看gc的次数,及时间
[root@localhost logs]#jmap -histo 5342                  #打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。
[root@localhost logs]# jmap -dump:format=b,file=gamexdds1.dump 15370   #dump内存

转载于:https://blog.51cto.com/dingmh/1357980

java cpu 占用高问题定位相关推荐

  1. 一次cpu占用高的定位分析

    客户机器cpu占用较高甚至出现cpu打满的情况,造流程启动运行缓慢,状态更新卡死,严重影响用户体验. 首先观察用户机器资源情况,内存剩余40G,jvm内存占用10%不到. jps -ml 拿到pid之 ...

  2. java cpu高_Java中的CPU占用高和内存占用高的问题排查

    下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...

  3. java 进程 cpu占用_JAVA进程CPU占用高的故障排查 – 运维那些事

    问题分析: 1.程序属于CPU密集型,和开发沟通过,排除此类情况. 2.程序代码有问题,出现死循环,可能性极大. 解决过程: 1.根据top命令,发现PID为2633的Java进程占用CPU高达300 ...

  4. Java吃CPU还是内存_Java中的CPU占用高和内存占用高的问题排查

    下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...

  5. java进程cpu占用高如何排查

    问题: 公司参加HW期间,项目两台双活的jboss服务器频繁触发cpu利用率过高告警,cpu利用率长时间在90%以上. 排查思路: 第一步:在两台Linux服务器上,执行top命令,并按大写P以cpu ...

  6. java模拟cpu返回_Java CPU 占用高 模拟及排查

    jiankunking@ubuntu:~$ jstack 4463 |grep 1170 -A 30 "main" #1 prio=5 os_prio=0 tid=0x00007f ...

  7. java进程CPU占用高如何排查-案例二

    近期项目新版本上线遇到cpu冲高现象,依据之前的经验,把这次排查过程记录下. 这次排查参考了之前记录的经验,还是很有用的:java进程cpu占用高如何排查_停5s的博客-CSDN博客_java进程cp ...

  8. Java 分析 程序CPU 占用高的原因

    Java 分析 程序CPU 占用高的原因 背景:最近突然发现线上测程序长时间CPU 占用过高.内存确没有什么消耗.这种情况下可以排除死锁(一般死锁之后,如果不是自旋锁的话,CPU 占用都不会很高),也 ...

  9. netty cpu 占用率 高_交换机CPU使用率高问题定位

    诊断工具 display工具 log工具 报文冲击导致的CPU使用率高问题 CPU使用率高问题信息采集 诊断工具 display cpu-usage [ slot x ] display cpu-de ...

最新文章

  1. mybatis-plus中的问题总结
  2. 记录mysql中的隐患特性
  3. 使用screen管理后台程序
  4. 第一个冲刺周期-第三天
  5. testflight怎么做版本更新_如何使用TestFlight进行App构建版本测试
  6. 简化Swagger使用的自制Starter:spring-boot-starter-swagger,欢迎使用和吐槽
  7. php拼接二维码,文字和二维码进行合并
  8. 电路分析基础知识点总结
  9. PanDownload:登录百度账号提示浏览器版本太低,点击下载webkit内核,然后重启软件即可
  10. html页面缩小图片缩小,如何缩小html页面中的图片大小?
  11. matlab中strcmp函数的使用
  12. 【ubuntu查看显卡、配置显卡、cuda、cudnn】
  13. 问题:Traceback (most recent call last): File “D:/xiangmu/python/test/test1.py“, line 100, in <module
  14. java 一元 二元 三元_一元到三元关系 二元
  15. 上网tips: 让电脑自带的便笺(便利贴、桌面便签)开机启动
  16. GitHub清华、北大、浙大、上海交大计算机系项目整理分享
  17. 修改热血传奇服务器地址,传奇私服如何更改上线地点
  18. Python 画中国地图 填色图 带南海九段线和指南针
  19. 关于PHP的成绩管理系统 (老师,管理员,学生,排课)
  20. 自动驾驶汽车GPS系统数字孪生建模(二)

热门文章

  1. Python如何打包EXE可执行文件
  2. CentOS 配置软raid
  3. CentOS7.3的基本配置(建议学习用)
  4. spring mvc静态资源访问的配置
  5. asp.net站点时间格式与系统时间格式不一致。手动修改
  6. Codeforces第一次rated比赛
  7. java中volatile关键字
  8. animate.css(第三方动画使用方法)
  9. PHP Ajax 跨域问题最佳解决方案
  10. [WPF]WPF开发方法论