java应用出现问题查看步骤

   判断操作系统层面的问题,我通过以下命令查看,昨天都已经试过了,应该没有问题。

 

  1. netstat –an 看是否有大量time_wait或者close_wait,以进一步判断是否程序有没有关闭连接的情况(time_wait),或者操作系统关闭连接等待时间过长(close_wait);
  2. 如果发现netstat –an有大量的连接,且应用程序使用的是阻塞式IO,那么需要判断ulimit –n,看操作系统句柄数量是否足够;
  3. 使用top命令查看CPU和内存占用情况,通常我们的应用都是IO密集型的,所以CPU过高的情况较少,主要关注内存占用情况。

Mem:   3925908k total,  3787840k used,   138068k free,    12716k buffers

Swap:  4063224k total,  2030264k used,  2032960k free,   596756k cached

 

内存有问题的情况:

free + buffers + cached 综合比较小

或者swap free很少

  4. 使用df –h关注一下磁盘空间,有些情况下是磁盘空间不足导致应用吞吐量下降;

  5. 对于多线程的程序,可以通过vmstat 命令,查看cs项,来判断多线程切换的情况(由于目前应用都是使用dubbo构建服务,所以在现有压力下,这块出问题的可能性较小)。

  6. 最后一招就是实用jdk自带的工具,有条件可以使用图形界面的jvisualvm,没有条件的可以使用jstack等工具。

posted @ 2016-11-12 10:56  wany82075  阅读(175)  评论(0编辑  收藏  举报