linux 系统常用诊断工具

目录

一. 机器性能参数

二. 查看机器的负载

2.1 uptime 命令

2.2 w 命令

2.3 top 命令

三. 机器正常负载范围

四. 如何降低负载


一. 机器性能参数

       平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt 等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下,在问题发生之前,某些指标就会提前有异常显示。

       负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态。

       在UNIX系统中,系统负载是对当前CPU工作量的度量,被定义为特定时间间隔内运行队列中的平均线程数。load average 表示机器一段时间内的平均load。这个值越低越好。负载过高会导致机器无法处理其他请求及操作,甚至导致死机。

       Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。

二. 查看机器的负载

2.1 uptime 命令

       uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

2.2 w 命令

       w命令的主要功能其实是显示目前登入系统的用户信息。但是与who不同的是,w命令功能更加强大,w命令还可以显示:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1分钟、5分钟和15分钟的平均负载。然后是每个用户的各项数据,项目显示顺序如下:登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。

2.3 top 命令

       top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。

三. 机器正常负载范围

       阮一峰在自己的博客中有过以下建议:当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。你不应该让系统达到这个值。

以上指标都是基于单CPU的,但是现在很多电脑都是多核的。所以,对一般的系统来说,是根据cpu数量去判断系统是否已经过载(Over Load)的。如果我们认为0.7算是单核机器负载的安全线的话,那么四核机器的负载最好保持在3(4*0.7 = 2.8)以下。

还有一点需要提一下,在Load Avg的指标中,有三个值,1分钟系统负荷、5分钟系统负荷,15分钟系统负荷。我们在排查问题的时候也是可以参考这三个值的。

四. 如何降低负载

       导致负载高的原因可能很复杂,有可能是硬件问题也可能是软件问题。

       如果是硬件问题,那么说明机器性能确实就不行了,那么解决起来很简单,直接换机器就可以了。前面我们提过,CPU使用、内存使用、IO消耗都可能导致负载高;

       如果是软件问题,有可能由于Java中的某些线程被长时间占用、大量内存持续占用等导致。建议从以下几个方面排查代码问题:

  1. 是否有内存泄露导致频繁GC;
  2. 是否有死锁发生;
  3. 是否有大字段的读写;
  4. 会不会是数据库操作导致的,排查SQL语句问题。

       这里还有个建议,如果发现线上机器Load飙高,可以考虑先把堆栈内存dump下来后,进行重启,暂时解决问题,然后再考虑回滚和排查问题。

你可能感兴趣的:(工作总结,Linux,linux,uptime,top,w,load)