zoukankan      html  css  js  c++  java
  • Linux系统性能监控

    系统的性能指标主要包括CPU、内存、磁盘I/O、网络几个方面。

    1. CPU性能

    (1)利用vmstat命令监控系统CPU

       该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU一个负载情况。

       下面是vmstat命令在某个系统的输出结果:

     

    Procs

         r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。

         b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

    cpu

         us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。

         sy列显示了内核进程消耗的CPU时间百分比。sy的值较高时,说明内核消耗的CPU资源很多。

        根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。

     

    (2)利用sar -u命令监控系统CPU

    通过“sar –u”组合,可以对系统的cpu使用情况做一个基本的统计

     

    输出项说明:

    CPU:all 表示统计信息为所有 CPU 的平均值。

    %user:显示在用户级别(application)运行使用 CPU 总时间的百分比。

    %nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。

    %system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。

    %iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。

    %steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

    %idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

    1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

    2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

    3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。

     

    2. 内存性能

    1)利用free指令监控内存

    free是监控linux内存使用状况最常用的指令,看下面的一个输出:

    第一行:

      total 物理内存总数:

      used 已经使用的内存数

      free 空闲的内存数

      shared 当前已经废弃不用,总是0

      buffers 即Buffer Cache内存数

      cached 即Page Cache内存数

      关系:total = used + free

    第二行:

      -/+ buffers/cache的意思相当于:

      -buffers/cache 的内存数:928772 (等于第1行的 used – buffers – cached),实际上是应用程序所使用的内存。

      +buffers/cache 的内存数: 1129628 (等于第1行的 free + buffers + cached),是对应用程序来说还剩余的内存。

    可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

    对操作系统来讲buffers/cached 都是属于被使用,所以它认为free只有220276

    对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

    第三行是交换分区swap, 列出已使用、空闲的swap.

    2利用vmstat命令监控内存

     

    memory(单位KB)

    swpd列表示切换到内存交换区的内存数量。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。

    free列表示当前空闲的物理内存数量

    buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。

    cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。

     swap(单位KB/s)

    si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。

    so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。

    一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。

     

    (3)利用sar -r评估内存性能

    通过“sar –r”组合,可以对系统的内存性能做一个基本的统计

     

    3.磁盘I/O性能 

    (1)利用iostat评估磁盘性能

    对上面每项的输出解释如下:

    Blk_read/s表示每秒读取的数据块数。

    Blk_wrtn/s表示每秒写入的数据块数。

    Blk_read表示读取的所有块数。

    Blk_wrtn表示写入的所有块数。

    可以通过Blk_read/s和Blk_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。对于这两个选项的值没有一个固定的大小,根据系统应用的不同,会有不同的值,但是有一个规则还是可以遵循的:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。

     

    (2)利用sar -d评估磁盘性能

    通过“sar –d”组合,可以对系统的磁盘IO做一个基本的统计

    tps:每秒从物理磁盘I/O的次数,多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的

    rd_sec/s:每秒读扇区的次数

    wr_sec/s:每秒写扇区的次数

    avgrq-sz:平均每次设备I/O操作的数据大小(扇区)

    avgqu-sz:磁盘请求队列的平均长度

    需要关注的几个参数含义:

    await表示平均每次设备I/O操作的等待时间(以毫秒为单位)

    svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)

    %util表示一秒中有百分之几的时间用于I/O操作

    对以磁盘IO性能,一般有如下评判标准:

         正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。

         await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

         %util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

     

    4. 网络性能

    (1)通过ping命令检测网络的连通性

    (2)通过netstat –i组合检测网络接口状况

     

    (3)通过netstat –r组合检测系统的路由表信息

    (4)通过sar –n组合显示系统的网络运行状态

    sar命令使用-n选项可以汇报网络相关信息,可用的参数包括:DEV、SOCK等。

    使用DEV关键字,那么sar将汇报和网络设备相关的信息,如lo、eth0、eth1等:

     

      IFACE:网络设备的名称;

      rxpck/s:每秒钟接收到的包数目

      txpck/s:每秒钟发送出去的包数目

      rxbyt/s:每秒钟接收到的字节数

      txbyt/s:每秒钟发送出去的字节数

      rxcmp/s:每秒钟接收到的压缩包数目

      txcmp/s:每秒钟发送出去的压缩包数目

      txmcst/s:每秒钟接收到的多播包的包数目

    使用SOCK关键字,则会针对socket连接进行汇报:

      tcpsck:当前正在被使用于TCP的socket数目

      udpsck:当前正在被使用于UDP的socket数目

      rawsck:当前正在被使用于RAW的socket数目

    ip-frag:当前的IP分片的数目

  • 相关阅读:
    TensorFlow神经网络集成方案
    过滤节点
    获取子节点
    获取兄弟节点
    获取父节点
    遍历DOM树
    获取修改CSS
    获取修改元素属性
    获取修改value
    获取更新元素文本html()
  • 原文地址:https://www.cnblogs.com/yuyue2014/p/3658337.html
Copyright © 2011-2022 走看看