第一步: 查看消耗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代码问题的更多相关文章

  1. Linux中查找最耗性能的JAVA代码

    在这里总结一下查找Linux.Java环境下最耗CPU性能的代码段的方法.基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程).使用jstack把java线程堆栈给dump下来.然后,在堆 ...

  2. linux中查找命令find、locate、whereis、which、type区别

    linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...

  3. linux中查找文件属于那个软件包的方法

    一.linux中查找文件属于那个软件包的方法 [root@salt prod]# whereis htpasswdhtpasswd: /usr/bin/htpasswd /usr/share/man/ ...

  4. linux中查找(find、locate、which、whereis、grep)命令汇总、帮助命令(man、whatis、apropos、info、help)汇总

    (一)find命令详解 find:功能:文件搜索: 语法:find[搜索范围][匹配条件]:  只要匹配条件完全符合才可以被显示,使用通配符*匹配条件*则可以显示匹配条件的所有目录,问号?匹配单个字符 ...

  5. systemd-analyze – 在Linux中查找系统启动性能统计信息

    您是否在使用 systemd 系统和服务管理器,并且您的 Linux 系统需要较长时间才能启动,或者您希望查看系统启动性能的报告? 如果是的话,你已经登陆了正确的地方. 在本文中,我们将向您展示如何使 ...

  6. 如何使用find命令在Linux中查找文件

    Linux Find命令是Linux系统管理员工具库中最强大的工具之一. Find是一个命令行实用程序,它允许您根据用户给定的表达式搜索目录层次结构中的文件和目录,并对每个匹配的文件应用用户指定的操作 ...

  7. linux中表示系统信息如cpu mem disk等内容都在 /proc

    linux中表示系统信息的 内容都在 /proc 要查看系统的任何信息, 如cpu mem 磁盘等等, 都在 /proc下, 如: cpuinfo ,meminfo diskstatus 等等

  8. 在 Linux 中查找和删除重复文件

    原文链接:https://www.linuxprobe.com/linux-FSlint.html FSlint同时具有GUI和CLI模式.因此,对于新手来说,这是一个用户友好的工具.FSlint不仅 ...

  9. 查找占用资源高的JAVA代码

    1. /tmp/hsperfdata_$USER目录 $USER是启动JAVA进程的用户,这里保存的所有用户启动的JAVA进程. 这些都JAVA进程的PID,里面存放的是JVM进程信息.你所用的jsp ...

随机推荐

  1. Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法

    用 hbuild 打 IOS 包,打包失败,提示以下错误: manifest.plus.plugins.push.igexin;manifest.plus.plugins.oauth.weixin; ...

  2. Java使用超级工具包Hutool操作数据库

    #=================================================================== # pom.xml中添加引用 # <!-- https: ...

  3. C++删除字符串的前后空格

    函数: string trim(string& str) { str.erase(0, str.find_first_not_of(" \t")); // 去掉头部空格 s ...

  4. Redis客户端多线程跟多个连接不是一回事

    先抱怨一波,大国庆节的放假前一天的下班前15分钟,通知让我加班,因为一个Redis的bug,而这个bug我在1个半小时之前刚听说了个大概,心里很不情愿: 好了,说正事: 问题现象: bug是这样的,两 ...

  5. Struts2(补充)

    关于Struts 配置文件(Struts.xml)中结果页说明 <result type=" " name=" "> </result> ...

  6. arcgis python 一个mxd打包mpk

    def onempk(fileName): if fileName: mxd = arcpy.mapping.MapDocument(fileName) else: mxd = arcpy.mappi ...

  7. <JavaScript>尺寸类样式的获取

    尺寸类样式的获取 offsetHeight HTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数.(content+ ...

  8. Facebook libra开发者文档- 2 -Libra Protocol: Key Concepts核心概念

    Libra Protocol: Key Concepts https://developers.libra.org/docs/libra-protocol Libra区块链是一个加密认证的分布式数据库 ...

  9. osg::GraphicsContext::WindowingSystemInterface Screen Resolution(屏幕分辨率)

    unsigned int width, height; //获取系统分辨率 osg::GraphicsContext::WindowingSystemInterface *wsInterface = ...

  10. Maven打包SpringBoot

    Pom文件提交plugin <build> <finalName>Site</finalName><!--文件名可自定义--> <plugins& ...