标签:regex java 14 Pattern util 过高时 Linux 占用率 110199
参考:
https://blog.csdn.net/yunzhonghefei/article/details/89207243
https://blog.csdn.net/u013467442/article/details/88957485
1、jstack需要使用与进程一致的用户才能执行
2、查看CPU占用率高的进程:top
cpu高达100.0us , 确定 pid 为 110199 的进程导致。
3、查看进程下占用CPU较高的线程:ps p 进程号 -L -o pcpu,pid,tid,time
ps p 110199 -L -o pcpu,pid,tid,time
%CPU PID TID TIME
18.7 110199 42096 14:42:30
41.7 110199 66438 14:39:08
41.8 110199 66440 14:39:55
42.8 110199 66491 14:38:57
41.3 110199 66515 14:27:08
41.3 110199 66611 14:23:05
41.3 110199 66612 14:22:59
41.5 110199 66638 14:24:53
41.3 110199 66639 14:21:53
37.6 110199 67920 12:12:33
比如最高的一组 %CPU占42.8 PID为110199 TID为66491 产生时间为14:38:57
4、将获取的线程号(十进制数)转换成十六进制
printf "%x\n" 66491
结果:103bb
5、结合进程号和线程号,利用jstack查到异常代码所在行:jstack -l 进程号 | grep 十六进制的线程号 -A 10
jstack -l 110199 | grep 0x103bb -A 10
结果:
[irfs@localhost bin]$ ./jstack -l 110199| grep 0x103bb -A 10
"http-nio-8082-exec-17" #2471 daemon prio=5 os_prio=0 tid=0x00007f3d3400f800 nid=0x103bb runnable [0x00007f3ef1547000]
java.lang.Thread.State: RUNNABLE
at java.util.regex.Pattern$Curly.match1(Pattern.java:4300)
at java.util.regex.Pattern$Curly.match(Pattern.java:4236)
at java.util.regex.Pattern$Slice.match(Pattern.java:3972)
at java.util.regex.Pattern$Start.match(Pattern.java:3461)
at java.util.regex.Matcher.search(Matcher.java:1248)
at java.util.regex.Matcher.find(Matcher.java:637)
at xx.ExcelToHtml.convert(ExcelToHtml.java:126)
at sun.reflect.GeneratedMethodAccessor186.invoke(Unknown Source)
[irfs@localhost bin]$
定位到ExcelToHtml.java:126 有死循环导致。
标签:regex,java,14,Pattern,util,过高时,Linux,占用率,110199 来源: https://blog.csdn.net/u014644574/article/details/114992493
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。