posts - 167,  comments - 30,  trackbacks - 0
系统影响慢或可能无法访问,服务器上发现swap占用很高,负载和cpu通过zabbix监控看比代码升级前都要高.
因服务器核数少,仔细观察有一个cpu利用率一直是100%或90%+上。
以前这类问题也遇到过,网上也有类似解决方法,这里自己做个笔记总结下。

首先不要着急重启服务,可以先切换到备用机器上(生产环境避免单机),保留问题现场查找原因。
top查看CPU情况

1)jps -m 非常方便直接定位所有的Java进程pid
2)jstack -l pid > jstack.log命令打印栈信息,如果因某些原因无法成功打印,
     可以使用kill -3 pid,输出到jvm日志中【resin服务器默认输出到jvm-default.log日志中】
3)查找占用CPU资源最高的进程id,使用top -H -p pid 查看进程pid的所有的线程,默认是按照%CPU高~低排序。
      或者直接使用top查看, shift+H显示所有的线程,默认按照%CPU高~低排序。
      找到占用CPU利用率最高的pid,一般CPU利用率达到90%以上,将pid转换为16进制【 linux自带python,命令:hex(pid)】

4)根据转换的16进制去jstack.log日志中查找基本能定位到具体哪行代码的问题。
"reportThirdException" daemon prio=10 tid=0x00007f8bd450b800 nid=0x12c4 runnable [0x00007f8b906ac000]
   java.lang.Thread.State: RUNNABLE
        at com.xxx.interfaces.util.NoticeMonitorSysHelper$ThreadStatue$1.run(NoticeMonitorSysHelper.java:167)
        at java.lang.Thread.run(Thread.java:722) 
posted on 2016-11-04 23:44 David1228 阅读(2271) 评论(0)  编辑  收藏 所属分类: JAVAJ2EE

只有注册用户登录后才能发表评论。


网站导航:
 

<2016年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

新闻分类

新闻档案

相册

收藏夹

Java

Linux知识相关

Spring相关

云计算/Linux/虚拟化技术/

友情博客

多线程并发编程

开源技术

持久层技术相关

搜索

  •  

积分与排名

  • 积分 - 354552
  • 排名 - 155

最新评论

阅读排行榜

评论排行榜