java2如何排查线上死循环-创新互联

本篇文章给大家分享的是有关java2如何排查线上死循环,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都创新互联公司是一家专业提供阜南企业网站建设,专注与做网站、成都网站建设、H5开发、小程序制作等业务。10年已为阜南众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

排查方法,因为是线上的linux,没有用jvm监控工具rim链接上去。

只好用命令排查:

top cpu排序,一个java进程cpu到500%了,什么鬼.....

查到对应java进程

jps || ps -aux | grep 端口

pid=13455

查看进程中线程使用情况 T排序 查看cpu占用time最高的线程编号

top -Hp 13455

有个线程9877 的时间一直在爆涨

获取线程十六进制地址9877 (十六进制一定要小写)

printf "%x\n" 9877

执行 jstack 13455|grep -10 2695(线程十六进制号)

如果想查看完整信息,可导出文本,查找

jstack -l 9839 > jstack.log-9893

"qtp750044075-25" #25 prio=5 os_prio=0 tid=0x00007f83354e5000 nid=0x2695 runnable [0x00007f830e5d8000]
 java.lang.Thread.State: RUNNABLE
at java.text.DateFormatSymbols.(DateFormatSymbols.java:145)
at sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)
at java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:364)
at java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:340)
at java.util.Calendar.getDisplayName(Calendar.java:2110)
at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1125)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
at java.text.DateFormat.format(DateFormat.java:345)
at com.huiwan.gdata.modules.gdata.util.TimeUtil.getDay(TimeUtil.java:383)
at com.huiwan.gdata.modules.gdata.publ.retain.service.impl.Retain3ServiceImpl.act(Retain3ServiceImpl.java:119)
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.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
 .......略
 Locked ownable synchronizers:
- None

本文题目:java2如何排查线上死循环-创新互联
路径分享:http://hbruida.cn/article/ccihoj.html