Java项目引起服务器cpu负载过高排查

top命令


 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18057 root      20   0 8635812 2.697g  15040 S 395.0 17.4  34:48.22 java
 1445 root      10 -10  145760  26204  11556 S   2.5  0.2   1092:17 AliYunDun
   14 root      20   0       0      0      0 S   0.5  0.0   4766:52 rcuos/0
   15 root      20   0       0      0      0 R   0.5  0.0   2836:31 rcuos/1
 6856 root      20   0       0      0      0 S   0.5  0.0   3:00.94 kworker/u8:2
    1 root      20   0   41392   3568   2252 S   0.0  0.0  31:49.58 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:31.23 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0 138:30.53 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S   0.0  0.0   2:45.36 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0
   10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1
   11 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/2
   12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/3
   13 root      20   0       0      0      0 S   0.0  0.0   8112:47 rcu_sched
   16 root      20   0       0      0      0 S   0.0  0.0   2403:45 rcuos/2
[root@al-juhe-japi-1 ~]# ps aux|grep 18057
root     18057  366 17.3 8634356 2827040 ?     Sl   18:02  35:19 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root     25108  0.0  0.0 112816   960 pts/1    S+   18:12   0:00 grep --color=auto 18057

ps -mp pid -o THREAD,tid,time

[root@al-juhe-japi-1 ~]# ps -mp 18057 -o THREAD,tid,time
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
root      372   -    - -         -      -     - 00:45:48
root      0.0  19    - futex_    -      - 18057 00:00:00
root     43.0  19    - -         -      - 24116 00:01:57
root      0.0  19    - futex_    -      - 24118 00:00:00

root      0.0  19    - inet_s    -      - 25522 00:00:00
root      0.0  19    - inet_s    -      - 25523 00:00:00
root      0.0  19    - inet_s    -      - 25524 00:00:00

在这里插入图片描述

将tid转化为16进制 printf “%x\n” tid

printf "%x\n" 24116
5e34

此处得到的线程id

jstack 18057 |grep tid -A 60


[root@al-juhe-japi-1 ~]# printf "%x\n" 24116
5e34
[root@al-juhe-japi-1 ~]# jstack 18057 |grep 5e34 -A 60
"catalina-exec-222" #21881 daemon prio=5 os_prio=0 tid=0x00007fb528105800 nid=0x5e34 runnable [0x00007fb4fb928000]
   java.lang.Thread.State: RUNNABLE
        at oilprice.QueryController.get(QueryController.java:57)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:891)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

补充

在这里插入图片描述
ps 命令之后输出的tid是10进制的,而jstack 输出的对应的线程是16禁止的,如果要对得上,需要转换为16进制
参考了https://www.bilibili.com/video/BV1yE411Z7AP/?p=14&spm_id_from=pageDriver&vd_source=49486cef967925ff182e4229f98534f0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

micro_cloud_fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值