前言:昨天下午3点半左右突然收到Zabbix监控报警,某服务器CPU占用到了100%满负荷状态,话不多说赶紧登上服务器一看究竟,这里记录下解决步骤:
一、用top命令进行查看(大写P或小写m都可以),确定是哪个java程序占用CPU高,找到其对应的pid。

昨天忘记了top截图,很尴尬,但是记得其pid为11101。
查询昨天zabbix历史记录,这里附上一张zabbix监控CPU截图,可见满载:
记一次Java程序占用CPU100%问题

二、查看此Java进程中各线程CPU占比。

pid为11101,使用命令“top -p 11101 -H”查看应用线程使用情况。
记一次Java程序占用CPU100%问题

补充命令:

ps -mp 11101 -o THREAD,tid,time | uniq -c | sort -nr
此命令可以直接查看线程的TID,且去重排序。

根据上图,即可定位占用CPU高的线程pid。
三、查看线程的具体堆栈信息。
1、首先将对应线程pid转化为16进制。
2、jstack 11101 |grep -A 500 0x2ba3
注:如果是使用TID的话,则输入“jstack 11101 | grep 2ba3 -A 500”,不需要“0x”。

记一次Java程序占用CPU100%问题

四、定位具体代码部分。
最有用的就是下面这段,我已摘出:

at java.util.regex.Matcher.match(Matcher.java:1270)
at java.util.regex.Matcher.matches(Matcher.java:604)
at com.rongdu.cashloan.core.common.util.StringUtil.isMail(StringUtil.java:95)
at com.rongdu.cashloan.api.controller.UserBaseInfoController.personalInfoAuthSave(UserBaseInfoController.java:285)
at sun.reflect.GeneratedMethodAccessor3930.invoke(Unknown Source)
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:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817

五、告知开发人员解决问题。

急忙告知开发人员此问题,定位出具体代码问题:
记一次Java程序占用CPU100%问题
原来是一段校验邮箱的正则表达式导致的问题。
至此,问题解决。

补充:转16进制的方法:

1、Linux服务器输入命令“printf “%x\n” 11171”。
记一次Java程序占用CPU100%问题
2、随便打开一个网页按F12,在Console输入“a = 11171;a.toString(16);”,回车。
记一次Java程序占用CPU100%问题
3、在线转16进制的网站很多,随便找一个即可,懒的找点击这里

相关文章:

  • 2022-01-28
  • 2021-07-30
  • 2021-08-08
  • 2021-10-02
  • 2022-01-22
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-19
  • 2021-08-01
  • 2021-05-01
  • 2021-08-14
  • 2021-04-16
相关资源
相似解决方案