系统稳定性---监控指标

1. 背景

  对于一个正在运行的系统,可能会碰到各类各样的问题,如依赖的应用宕机、程序bug、负载太高等问题,当遇到问题的时候,咱们应该第一时间远程登陆到服务器上,找到相关的日志进行分析或者查看对应的监控指标,以找到问题的根源。linux

2.系统问题分析

  不一样的业务的日志都不一样,所以本文中不对特定的业务日志进行分析,而从linux系统的经常使用命令的角度来排查问题。ios

2.1 指标监控

  系统运行的繁忙程度、健康程度,反应在一系列的运行期指标上,不论是CPU负载太高、磁盘I/O过于频繁、或者内存使用过多,致使频繁的FGC,或者qps太高,都会致使系统的服务质量降低,所以当对应的指标超过假定的阈值的时候,开发或者运维人员必须接入进行处理。web

2.1.1 load

  在linux系统中,能够经过uptime来查看当前系统的load值,那么什么是load呢?系统的load被定义为特定时间间隔内运行队列中的平均线程数,通常来讲只要每一个cpu当前的活动线程数不超过3,那么就是安全的。安全

2.1.2 CPU利用率

  能够经过top | grep Cpu便可以获取当前cpu的消耗状况,咱们须要重点关注的几个指标包括us,sy,wa,st,us表明CPU执行用户程序所占用的时间,经过状况下但愿us的占用比越高越好。sy表明的是系统时间,表示CPU在内核态所花费的时间,若是sy的占用比太高,那么意味着系统在某些地方设计不够合理,好比频繁的切换用户态和系统态。而对于计算密集型的应用us必定会偏高,wa表明的是等待时间,表示CPU在等待I/O所花费的时间,系统通常不该该花费大量的时间来等待,若是wa太高,则表明的是系统设计有不合理的地方,例如咱们的程序中有大量的对磁盘的读写,由于磁盘的性能问题,wa会太高。st表明的是丢失时间,是在硬件虚拟化后操做系统新增的一行,表示被强制等待虚拟CPU的时间,st越高意味着当前虚拟机与该宿主机上的别的虚拟机竞争较为频繁,通常大于5%就须要联系运维人员进行调整了。服务器

2.1.3 特定的进程

  能够经过top -p 来查看特定的进程的消耗状况。而top -Hp 则看出该进程中最耗cpu的应用是哪个网络

2.1.4 磁盘使用状况

  磁盘剩余状况也是一个很是重要的指标,若是磁盘没有足够的剩余空间,那么正常的日志写入和系统I/O都将没法正常进行。经过df -h既能够看到各个分区的占用状况。
  若是须要查看特定的目录下占用内存状况,使用du 命令,du –max-depth 1 -h /home/long。运维

2.1.5 网络traffic

  通常状况下,网络应用而言,网络traffic也值得关注。经过sar -n DEV 1 1 能够看到系统的网络情况。-n表明的是汇报网络情况,而DEV则表示查看的是各个网卡的网络流量,而第一个1表明额是每秒抽样1次,第二个1表明的是总共取样1次,展现的结果中lo表明的是本机回环网络,而eth0表明的是网卡,而rxpck/s表明的是每秒接收的数据包数量,txpck/s表明的是每秒发送的数据包数量,rxKB/s每秒接收的数据量,txKB/s表明的是每秒发送的数据量,rxcmp/s表明的是每秒接收的压缩包的数量,txcmp/s表明的是每秒发送的压缩包的数量,rxmcst/s表明的是每秒收到的广播包的数量。下面的Average表明的是屡次取样的平均值。svg

2.1.6 磁盘I/O

  经过磁盘I/O状况的查看咱们能够看出来IO的繁忙状况,IO繁忙状况也在必定程度上反映了系统的负载状况,容易成为应用的瓶颈,经过iostat -d -x能够查看IO状况,Device表明的是设备名称,tps表明的是每秒处理的IO请求数量,KB_read/s表明的是每秒从设备读取的数据量,KB_wrtn/s表明的是每秒写入设备的数据量,KB_read表明的是读取的数据总量,KB_wrtn表明的是写入的数据总量。性能

2.1.7 内存使用

  使用free -m能够看出来内存使用状况,须要关注的指标包括total、used、free指标,free+buffers+cached表明的是可用内存大小,若是可用内存太小会致使FGC从而影响系统的响应
  而对于应用来讲虚拟内存swap的使用,若是swap使用太高,说明须要调用大量内存到磁盘的切换,影响系统的性能,经过vmstat咱们可看出虚拟内存的使用状况,si列表明的是每秒从磁盘交换到内存的数据量,so表明的是每秒从内存交换到磁盘的数据量,内存密集型应用si和so指标会上升。操作系统

  上文咱们分析应用服务器的监控指标,咱们能够根据上面的指标对比咱们应用日常的指标数据,若是发现异常,那么就须要根据特定的指标来分析异常的缘由,从而尽快地定位问题并解决问题。