如何处理服务器load高问题

(#)前瞻:前一段经常发现系统load高,机器一直报警,其实针对与load高,初步的想法(1).死循环,导致一直占用cpu (2).JVM虚拟机在不停的fgc,但是并不能减轻系统压

     力,导致系统一直尝试fgc,服务不可用,cpu彪高

 

(#)然而问题来了,具体怎么检查处理呢?首先,这样,我们先写一段代码来模拟这种情况

  

  执行了这段代码之后,我们会发现cpu的情况,这时候cpu已经彪起来了

    

  并且我们可以看到是21094这个进程占用大部分的cpu,下面就简单多了,我们只需要找到这个进程里面哪些线程占用大部分cpu

  

  这个时候可以发现21328这个线程占用了99%的cpu,那么剩下的我们需要打印出来这个线程的栈信息,转换21328为16进制,结果5350

    这样其实可以很清晰的看出来,这个线程在执行我们的循环代码,所以很容易就定位了问题。

(#)如何这个时候我们发现没有解决问题,也就是发现这个线程是gc线程的时候,虽然没有直接的解决问题,但是我们知道我们的系统正在gc,这个时候就需要分析

   dump信息了.

   可以参考这个博客,其实写的不错,我就不重复写了,没有意义http://www.cnblogs.com/kongzhongqijing/articles/3621163.html      

posted @ 2017-05-19 22:04  nasjjsadkef  阅读(1190)  评论(0编辑  收藏  举报