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

1. 背景

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

2.系统问题分析

  不同的业务的日志都不同,因此本文中不对特定的业务日志进行分析,而从linux系统的常用命令的角度来排查问题。

2.1 指标监控

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

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代表的是多次取样的平均值。

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指标会上升。

  上文我们分析应用服务器的监控指标,我们可以根据上面的指标对比我们应用平常的指标数据,如果发现异常,那么就需要根据特定的指标来分析异常的原因,从而尽快地定位问题并解决问题。

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提高系统稳定性的控制方法有很多,以下是一些常见的方法: 1. 引入冗余:通过增加冗余组件来提高系统的容错能力,当某个组件出现故障时,冗余组件可以接替其功能,保证系统的稳定运行。 2. 实施监控与预警:设置监控系统来实时监测系统的运行状态,当系统出现异常时能及时发出警报,以便及时采取措施修复问题,避免问题进一步扩大。 3. 自动化运维:通过自动化工具和流程来管理和维护系统,减少人为错误和操作风险,提高系统稳定性和可靠性。 4. 定期备份与恢复:定期备份系统数据和配置信息,并建立可靠的恢复机制,以便在系统故障或数据丢失时能够快速恢复。 5. 引入负载均衡:对于高负载的系统,通过引入负载均衡技术,将请求分散到多个服务器上,避免单点故障和过载,提高系统的可用性和稳定性。 6. 引入容器化技术:使用容器化技术如Docker等,将系统组件打包成独立的容器,实现组件之间的隔离和资源分配,提高系统稳定性和可维护性。 7. 引入监控和度量:通过引入性能监控和度量系统,可以实时监控系统的性能指标,并进行性能分析和优化,提高系统稳定性和性能。 这些方法只是一些常见的控制方法,实际情况可能因系统类型、规模和业务需求等而有所不同。因此,在具体场景中,还需要根据系统特点和需求来选择和实施适合的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值