Linux系统的性能指标


之前被问到过的一个问题,也能够答上来一些,但可能因为没有接触过真实的线上生产环境,只是自己在自己的虚拟机/VPS上运行的时候查看着玩一玩,对性能指标、系统性能监控没有什么特别深刻、直观的认识,闲着的时候想想这个问题(对于一台Linux机器来说,如何监控它的CPU,内存,磁盘,网络等的使用情况;怎样算高负载,具体的依据是什么?)可能还是得总结一下,说不定什么时候就再用得上呢?

一、CPU的使用情况

CPU使用率反映的是当前CPU的繁忙程度,忽高忽低的原因在于占用CPU处理时间的进程可能处于I/O等待状态但却还未释放进入wait。

平均负载(load average)是指某段时间内占用CPU时间的进程和等待CPU时间的进程数,这里等待CPU时间的进程是指等待被唤醒的进程,不包括处于wait状态进程。

CPU良好状态的指标
  • CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%。
  • 上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。
  • 可运行队列:每个处理器的可运行队列<=3个线程。
常用监控工具/命令有:
  • mpstat: mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。
  • vmstat:查看所有CPU的平均信息。
  • iostat: 只能查看所有CPU的平均信息。
  • sar: 与 mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。
  • top: 显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。
二、Memory的使用情况
Memory的良好状态指标

swap in (si) == 0,swap out (so) == 0
应用程序可用内存/系统物理内存 <= 70%

常用监控工具/命令:
  • vmstat
  • free
三、磁盘的使用情况(磁盘I/O)
磁盘使用率的良好状态指标
  • iowait % < 20%
  • 提高命中率的一个简单方式就是增大文件缓存区面积,缓存区越大预存的页面就越多,命中率也越高。
  • Linux 内核希望能尽可能产生次缺页中断(从文件缓存区读),并且能尽可能避免主缺页中断(从硬盘读),这样随着次缺页中断的增多,文件缓存区也逐步增大,直到系统只有少量可用物理内存的时候 Linux 才开始释放一些不用的页。

常用监控工具/命令:

  • iostat
  • sar
  • df
  • iotop
四、网络状况(网络I/O)

如何判断网络状态是否良好这个暂时还真不清楚o(╯□╰)o

常用监控工具/命令:
  • iftop
  • nload
  • iptraf
  • nethogs
  • netstat
  • sar
  • dstat
  • tcpdump
  • mtr
五、其它

文件、进程、端口等的使用情况(第5部分的内容其实和上面的4个分类有重叠,也可以算是上面4个分类的一种微观表现吧)

  • lsof
  • htop
  • w
  • vnstat
  • ps
  • pgrep

 

参考/扩展链接:
,

《“Linux系统的性能指标”》 有 9 条评论

  1. OpenFalcon文档
    https://book.open-falcon.org/zh_0_2/intro/index.html

    定位IO瓶颈的一些方法
    http://blueswind8306.iteye.com/blog/2032980
    http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/

    falcon – 一般监控指标汇总
    http://book.opschina.org/falcon-yi-ban-jian-kong-zhi-biao-hui-zong.html

    9.4 Linux common monitor control index
    https://songliling1.gitbooks.io/open-falcon/content/94_linux_common_monitor_control_index.html
    `
    disk.io.util: A percentage, for example 56.43 means 56.43%
    disk.io.util 这个指标的单位是%,即显示 3.8 的真正含义是 3.8% 而不是 380%
    `

    互联网企业级监控系统实践
    http://www.jianshu.com/p/56169276a5f4

  2. 基础设施助力双11(六):看网络如何“自愈”
    https://mp.weixin.qq.com/s/PXClE-pg9Y9AsdDnXW2dKA
    `
    处理故障的主要流程是:监控采集->故障发现->根因定位->故障恢复

    丰富的采集
      目前每天的数据采集量接近万亿级的水平,采集的类型包括日志、SNMP采集(路由器交换机性能指标采集)、AliPing采集(内网质量采集)、AliInternet采集(互联网质量采集)、Netflow采集(流数据采集)等。

    灵活的告警(故障发现)
      基础事件
      CEP复杂事件引擎
      告警收敛

    故障定位&自动恢复
      提供一个平台,让运营的同学提交脚本,更全面、灵活的覆盖到所有的告警场景。
    `

  3. 运维监控系统之Open-Falcon
    https://www.cnblogs.com/nulige/p/7741580.html
    http://book.open-falcon.org/zh/faq/linux-metrics.html
    http://book.open-falcon.org/zh_0_2/faq/linux-metrics.html#%E8%BF%9B%E7%A8%8B%E7%9B%91%E6%8E%A7
    `
    14. 进程监控
    proc.num:判断某个进程的数目,这里需要分两个场景,一种是根据进程的名字来判定,比如name=sshd;另外一种是根据cmdline来判定,比如Java的应用进程名可能都是java,根据第一种情况没法做区分,此时可以配置cmdline,如cmdline=./falcon_agent-c./cfg.ini

    15. 进程资源监控
    process.cpu.all:进程和它的子进程使用的sys+user的cpu,单位是jiffies
    process.cpu.sys:进程和它的子进程使用的sys cpu,单位是jiffies
    process.cpu.user:进程和它的子进程使用的user cpu,单位是jiffies
    process.swap:进程和它的子进程使用的swap,单位是page
    process.fd:进程使用的文件描述符个数
    process.mem:进程占用内存,单位byte
    `
    简析运维监控系统及Open-Falcon
    https://blog.csdn.net/puma_dong/article/details/51895063

  4. 一份来自滴滴运维工程师的监控系统建设心得(有彩蛋)
    https://mp.weixin.qq.com/s/UlnHOaN0xaA0jfg5CEmLRA
    `
    一、一般监控系统的功能
    一般的基础监控系统,主要有看图和告警两大功能,通过这两大功能,满足上述的发现问题的需求。

    二、监控系统模块拆解
    采集:对应Open-Falcon的Agent以及App library;
    存储:对应Open-Falcon的Transfer、Query和Graph;
    告警:对应Open-Falcon的Judge、Alarm;
    绘图:对应Open-Falcon的Dashboard。

    1、数据采集的原则
    作为平台的设计者,必须要考虑标准化与规范化。
    2、存储建设的关键点
    功能、性能、容量
    3、绘图功能的考量
    与资源管理(服务树系统)打通
    数据横向的比较
    数据纵向的聚合
    4、如何让报警能力更加强大
    推模式——告警数据在上报时,自动推往告警模块
    拉模式——由告警模块定时从存储拉取监控数据
    三、监控的稳定性架构
    在数据上报的链路建设中,可以考虑使用消息队列来应对流量的潮汐。削峰填谷。
    存储的稳定性,可以考虑数据双写。两个集群分开部署。可以应对专线断开以及分片挂掉两种情况。
    对于告警体系,给大家推荐我们的主从模式:从集群平时处于休眠状态,会定时的对主集群进行探测,一旦发现主集群挂掉,或探测不通,就将自身拉起,达到一个故障时间内的双活。
    `

发表评论

您的电子邮箱地址不会被公开。