Linux中查找最耗CPU的Java代码问题
第一步: 查看消耗CPU最高的进程PID
[lolaage@web2 tomcat-ns]$ top
top - 13:23:32 up 42 days, 19:11, 3 users, load average: 1.01, 0.86, 0.78
Tasks: 153 total, 2 running, 151 sleeping, 0 stopped, 0 zombie
%Cpu(s): 16.3 us, 0.8 sy, 0.0 ni, 82.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16267172 total, 1135628 free, 6554372 used, 8577172 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 9275688 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23496 lolaage 20 0 9985736 1.978g 11148 S 104.8 12.7 32:17.81 java
5081 lolaage 20 0 1289012 328804 2012 S 9.7 2.0 2562:11 srs
1958 lolaage 20 0 10.631g 2.809g 7520 S 8.9 18.1 2332:34 java
1 root 20 0 43800 3700 1932 S 0.0 0.0 6:29.39 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:01.03 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 2:12.16 ksoftirqd/0
第二步:查看消耗CPU最高的线程TID
[lolaage@video1 mpmt-socket]$ ps -mp 23496 -o THREAD,tid,time
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
lolaage 51.6 - - - - - - 00:32:22
lolaage 0.0 19 - futex_ - - 23496 00:00:00
lolaage 0.3 19 - futex_ - - 23508 00:00:14
lolaage 0.0 19 - ep_pol - - 23530 00:00:00
lolaage 0.0 19 - futex_ - - 23539 00:00:00
lolaage 4.5 19 - futex_ - - 23541 00:02:51
lolaage 4.5 19 - futex_ - - 23543 00:02:51
lolaage 4.5 19 - futex_ - - 23545 00:02:52
lolaage 4.5 19 - futex_ - - 23546 00:02:51
lolaage 4.5 19 - futex_ - - 23547 00:02:51
lolaage 4.6 19 - - - - 23548 00:02:55
lolaage 5.3 19 - futex_ - - 23549 00:03:19
lolaage 5.3 19 - futex_ - - 23550 00:03:20
lolaage 4.5 19 - futex_ - - 23551 00:02:50
lolaage 4.5 19 - futex_ - - 23552 00:02:51
lolaage 0.0 19 - futex_ - - 23553 00:00:00
第三步:把线程ID转为16进制
[lolaage@video1 mpmt-socket]$ printf "%x\n" 23549
5bfd
第四步:查看堆栈信息
[lolaage@video1 mpmt-socket]$ jstack 23496 |grep 5bfd -A 30
"startQuertz_Worker-7" #25 prio=5 os_prio=0 tid=0x00007fb5fcdf8800 nid=0x5bfd in Object.wait() [0x00007fb5f6629000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- locked <0x00000006c8d35208> (a java.lang.Object)
"startQuertz_Worker-6" #24 prio=5 os_prio=0 tid=0x00007fb5fcdf6800 nid=0x5bfc in Object.wait() [0x00007fb5f672a000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- locked <0x00000006c8d15290> (a java.lang.Object)
"startQuertz_Worker-5" #23 prio=5 os_prio=0 tid=0x00007fb5fcdf4800 nid=0x5bfb in Object.wait() [0x00007fb5f682b000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- locked <0x00000006c8d14fa8> (a java.lang.Object)
"startQuertz_Worker-4" #22 prio=5 os_prio=0 tid=0x00007fb5fcdf2800 nid=0x5bfa in Object.wait() [0x00007fb5f692c000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- locked <0x00000006c8d14cc0> (a java.lang.Object)
经检查发现相关的程序代码中使用了locked导致的
Linux中查找最耗CPU的Java代码问题的更多相关文章
- Linux中查找最耗性能的JAVA代码
在这里总结一下查找Linux.Java环境下最耗CPU性能的代码段的方法.基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程).使用jstack把java线程堆栈给dump下来.然后,在堆 ...
- linux中查找命令find、locate、whereis、which、type区别
linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...
- linux中查找文件属于那个软件包的方法
一.linux中查找文件属于那个软件包的方法 [root@salt prod]# whereis htpasswdhtpasswd: /usr/bin/htpasswd /usr/share/man/ ...
- linux中查找(find、locate、which、whereis、grep)命令汇总、帮助命令(man、whatis、apropos、info、help)汇总
(一)find命令详解 find:功能:文件搜索: 语法:find[搜索范围][匹配条件]: 只要匹配条件完全符合才可以被显示,使用通配符*匹配条件*则可以显示匹配条件的所有目录,问号?匹配单个字符 ...
- systemd-analyze – 在Linux中查找系统启动性能统计信息
您是否在使用 systemd 系统和服务管理器,并且您的 Linux 系统需要较长时间才能启动,或者您希望查看系统启动性能的报告? 如果是的话,你已经登陆了正确的地方. 在本文中,我们将向您展示如何使 ...
- 如何使用find命令在Linux中查找文件
Linux Find命令是Linux系统管理员工具库中最强大的工具之一. Find是一个命令行实用程序,它允许您根据用户给定的表达式搜索目录层次结构中的文件和目录,并对每个匹配的文件应用用户指定的操作 ...
- linux中表示系统信息如cpu mem disk等内容都在 /proc
linux中表示系统信息的 内容都在 /proc 要查看系统的任何信息, 如cpu mem 磁盘等等, 都在 /proc下, 如: cpuinfo ,meminfo diskstatus 等等
- 在 Linux 中查找和删除重复文件
原文链接:https://www.linuxprobe.com/linux-FSlint.html FSlint同时具有GUI和CLI模式.因此,对于新手来说,这是一个用户友好的工具.FSlint不仅 ...
- 查找占用资源高的JAVA代码
1. /tmp/hsperfdata_$USER目录 $USER是启动JAVA进程的用户,这里保存的所有用户启动的JAVA进程. 这些都JAVA进程的PID,里面存放的是JVM进程信息.你所用的jsp ...
随机推荐
- Codeforces Round #589 (Div. 2)
目录 Contest Info Solutions A. Distinct Digits B. Filling the Grid C. Primes and Multiplication D. Com ...
- 搭建自己的博客(六):添加首页,使用css对界面做美化
之前优化了一些代码,但是之前进入首页直接进入了博客列表,今天添加了首页,以区分和博客的区别,并且使用css代码美化了之前的一些东西. 1.变化的部分,先上图:(蓝色表示修改,红色表示新增)
- WPS-系统缺失字体
WPS-系统缺失字体 小书匠 linux 在Linux上新安装WPS后,第一次打开就出现以下问题: wps系统缺失字体 问题原因: Linux上缺少windows字体,把字体添加上去即可. 操作步骤 ...
- docker hub 国内镜像加速地址
当前可用 配置文件:vim /etc/docker/daemon.json { "registry-mirrors" : [ "http://docker.mirrors ...
- Mac佳软之Understand---Android源码分析阅读神器
下载地址, 密码:gebp 供大家体验, 请大家支持正版!!! https://www.jianshu.com/p/06f25d9131de
- .Net类库 压缩文件 与 Ionic.Zip 批量压缩不同目录文件与解压 文件
using System; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; us ...
- 2.linux的增删改查
一.增删改查 1.建立文件和目录 mkdir /tmp/xueying 2.cd 进入的路径 绝对路径:以根目录为其实目录的路径 ...
- 2018-2019-2 20165234 《网络对抗技术》 Exp8 网络欺诈防范 Web基础
Exp8 网络欺诈防范 Web基础 一. 实践内容 1. Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. 2. Web ...
- Flutter布局基本情况总结:
1.一行内容,发布两边: 效果: Flex( direction: Axis.horizontal, children: <Widget>[ Expanded( flex: , child ...
- java精确计算工具类
java精确计算工具类 import java.math.BigDecimal; import java.math.RoundingMode; import java.math.BigDecimal; ...