• dstat 监控命令详解


    一、工具介绍

      dstat的man手册对于该工具的解释:

        dstat - versatile tool for generating system resource statistics 系统资源多用途的统计工具  

      Dstat is a versatile replacement for vmstat, iostat and ifstat. Dstat overcomes some of the limitations and adds some extra features.

      dstat可以替代vmstat、iostat、ifstat。dstat突破了vmstat、iostat、ifstat的一些限制并增加了一些额外特性。  

      Dstat allows its data to be directly written to a CSV file to be imported and used by OpenOffice,Gnumeric or Excel to create graphs.

      dstat可以将数据重定向写入csv文件,并支持通过office工具导出和使用,也可以用excel绘图表。

    二、dstat基本用法

      dstat命令不加任何参数时,会收集CPU、磁盘、网络、分页、系统的数据信息,每秒收集一次。缺省参数时相当于dstat -cdngy 1或dstat -a 1。

      命令格式

      dstat [-afv] [options..] [delay [count]]  

      常用选项

     
    -c,--cpu 开启cpu统计
    -d, --disk 开启disk统计
    -D 改选跟具体的设备名(多个用逗号隔开)如:total,hda,hdb表示分别统计total、hda、hdb设备块
    -i, - -int 开启中断统计
     -l, --load 开启负载均衡统计,分别是1m,5m,15m
    -m, --mem 开启内存统计,包括used,buffers,cache,free
    -n, --net 开启net统计,包括接受和发送
    -N 该选项可以跟网络设备名多个用逗号隔开,如eth1,total
    -g, --page 开启分页统计
    -p, --proc 开启进程统计,包括runnable, uninterruptible, new
    -r, --io io开启请求统计,包括read requests, write requests
    -s, --swap 开启swap统计,包括used, free
    -S 该选项可以跟具体的交换区,多个用逗号隔开如swap1,total
    -t, --time 启用时间和日期输出
    -y, --sys 开启系统统计,包括中断和上下文切换
    --fs 开启文件系统统计,包括 (open files, inodes)
    --ipc 开启ipc统计,包括 (message queue, semaphores, shared memory)
    --output file 输出结果到cvs文件中
    -a, --all 是默认值相当于 -cdngy (default)
    -f, --full 相当于 -C, -D, -I, -N and -S

      参数

    参数名称 参数描述
    delay 两次输出之间的时间间隔,默认是1s
    count 报告输出的次数,默认是没有限制,一直输出知道ctrl+c

    常用选项的判断方法

      进程相关

        -p,--proc

          

    -p , --proc
        展示当前时刻的进程状态:可运行态(就绪态),无法中断的睡眠态(等待态),新进程,
        文档原文为:runnable, uninterruptible, new。
        就绪态进程多代表负载较高,配合-l参数确认,比如run为80,即当前有80个进程等待CPU处理,等待态进程多代表当前IO可能有问题,等待态进程是内存中等待非CPU资源的进程,一般是等待IO,可以根据-c的wai列确认, 进一步根据-g的in列确认是否是内存瓶颈后的恢复期,配合-s参数查看换页使用情况,
        -d查看当前bio情况,如果-d的bio的read和-g的in差不多,表名当前IO主要是换页到内存加载造成的,即内存不足后的恢复期,
         如果-g和-s表名换页未使用,但是-d居高,则说明当前有大量进程等待磁盘IO,
         使用--top-bio-adv确定bio最高的进程,
         如果-d也不高,但是-n较高,说明进程等待网络IO
         使用--top-io-adv确定IO最高的进程。         
    

      

    --proc-count:展示进程数量,侧面反映系统负载
    

      

    -y, --sys:展示系统中断次数int和上限文切换次数csw,
        上下文切换:CPU运行任务1,切换运行就绪态任务2,
        任务1可能变成就绪态(CPU时间片耗光),
        也可能变成等待态(等待IO等非CPU资源),
        CPU的处理时间片较短,中断和上下文切换次数数字会很大,
        也能从侧面反映负载,如果中断和上下文切换暴涨,
        表明负载过大,或者程序设计不合理,或者kernel级别的BUG。
    

     

    --ipc:展示IPC(进程间通信)状态, 
           包括msg消息队列 ,sem线程队列,shm共享内存使用
    

    进程最耗资源统计

    --top-cpu
           展示最耗CPU的进程名和CPU占比
    

     

    --top-cpu-adv
           展示最耗CPU的进程名、PID和CPU占比以及读写信息,
           这个读写信息是一个差值,推测是内存的读写。
    

    --top-cputime
           展示耗费CPU时间最多的进程名和耗费时间(ms)
    

    --top-latency
           显示延迟最高的进程名和延迟时间(ms)
    

    --top-bio-adv
           展示当前最耗block I/O的进程名、PID和读写容量以及CPU占比
           即最高磁盘IO的进程。
    

    --top-io
           展示最耗IO的进程名和IO读写信息,
           被统计的IO信息包括blockIO和内存还有网络等全部,
           因此如果要判定最耗磁盘读写的进程,应该使用--top-bio,
           某一时刻,最耗IO和最耗blockIO的进程不一定是同一个。
    

     

     

    --top-mem
           展示最耗内存的进程名和内存消耗
    

     

    --top-oom
           展示最先OOM杀死的进程,OOM是内存回收机制
    

      

     内存相关参数

    -m, --mem
           展示内存状态,包括used, buffers, cache, free
    

     

    网络相关参数

    -n, --net
           展示总体网络收发状态,折算后附带单位友好展示
    

    -N 必须和-n配合使用:dstat -n -N eth0,total
           当存在多网卡时,可以分别指定展示各个网卡的收发状态
    

     

    --socket
           展示套接字状态,包括tot总数量,tcp套接字数量,udp套接字数量,
           raw原始套接字数量,frg(ip-fragments IP碎片)套接字数量。
    

     

    --tcp  (listen, established, syn, time_wait, close)
           展示tcp网络连接状态,lis监听的数量,act(established)活动的确立的数量,
           synTCP/IP的握手数量,tim(time_wait)发起关闭后的等待关闭态数量,
           clo关闭态数量,即命令netstat -tpln对应记录的搂取合并。
    

     

    硬盘相关参数

    -d, --disk
           展示磁盘设备读写总计,折算后附带单位友好展示
    

     

    -D 必须和-d配合使用:dstat -dD sda,sda2,total
           分别展示设备sda和sda2以及总体的读写状态
    

     

    --disk-tps
           展示每个磁盘每秒事物读写数量
    

     

    MYSQL相关参数

    # mysql相关参数使用配置:
    yum -y install MySQL-python
    export DSTAT_MYSQL_HOST=127.0.0.1
    export DSTAT_MYSQL_USER=root
    export DSTAT_MYSQL_PWD='ecpss@123'
    mkdir /var/lib/mysql
    ln -s /usr/local/mysql/mysql.sock /var/lib/mysql/mysql.sock
    # 如果功能报错,请修改/usr/share/dstat目录内对应脚本
    # 如果参数--mysql5-cmds报错,则修改dstat_mysql5_cmds.py
    --innodb-buffer
           show innodb buffer stats
    --innodb-io
           show innodb I/O stats
    --innodb-ops
           show innodb operations counters
    # 以上三个参数信息都由"show engine innodb statusG
    "获得,
    # 因涉及os.popen3兼容问题,暂不研究
    --mysql5-cmds
           展示mysql库所有的dml操作次数,包括:
           sel查询次数,ins插入次数,upd更新次数,del删除次数,
           加大dstat_mysql5_cmds.py的self.width参数,以免数据展示不全,
           该参数是展示数据的最大长度,数据由以下mysql库SQL提供:
           show global status like 'Com_select';
           show global status like 'Com_insert';
           show global status like 'Com_update';
           show global status like 'Com_delete';
           是mysql库的内存状态,重启后数据清零。
    
  • 相关阅读:
    Google recaptcha在webform中的使用
    User control's property loses value after a postback
    share memory cache across multi web application
    Losing session data in ASP.NET
    What is the difference between UserControl, WebControl, RenderedControl and CompositeControl?
    maven跳过单元测试-maven.test.skip和skipTests的区别
    @RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
    SpringBoot-@PathVariable
    pick王菊?作为“菊外人”的程序员能做点什么?
    数据库CRUD操作
  • 原文地址:https://www.cnblogs.com/zh-dream/p/12081455.html
Copyright © 2020-2023  润新知