网络类-dstat

工具教程7小时前发布 hank
22 0 0

前置

前言:dstat是一个集成的工具,和sysstat工具集类似,可以看cpu、disk、network、memory、page等“部分”数据,使用场景:用一条命令同时观察 CPU、磁盘、网络、分页、中断、上下文切换等系统指标,快速判断性能问题大概出在哪个方向。

安装部署:以centos为例,yum源内有集成包,可直接安装

yum install  dstat -y

[root@n222-249-139-250 ~]# yum list | grep dstat
dstat.noarch                             0.7.2-12.el7                  base

[root@n222-249-139-250 ~]# rpm -qa | grep dstat
dstat-0.7.2-12.el7.noarch

使用方法

使用方法:
1.可直接输出dstat,直接全量展示,c,d,n,g,y,等同于dstat -cdngy,平时建议参数可附加-t,展示时间,但是要附加-t的话,要补全参数,不然只有时间哈
dstat -tcdngy
具体参数拆开看,刚好目前业务场景主要需要c,d,n指标

[root@mcdn-qny-zqzq-cmcc-y-426 ~]# dstat -tcdngy
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
21-07 21:35:13|  5   5  86   1   1   2|  23M   10M|   0     0 |   0     0 |  88k   58k
21-07 21:35:14| 12  19  59   4   2   4|  86M   12M|  20M   71M|   0     0 | 202k  135k
21-07 21:35:15| 10  16  64   3   2   4|  81M   15M|  16M   70M|   0     0 | 183k  120k
21-07 21:35:16| 12  13  65   4   2   4|  88M   12M|  16M   71M|   0     0 | 187k  123k
21-07 21:35:17| 12  12  67   3   2   4|  78M   16M|  17M   70M|   0     0 | 183k  119k
21-07 21:35:18| 10  10  70   4   2   4|  85M   13M|  17M   70M|   0     0 | 183k  116k
21-07 21:35:19| 11  11  67   3   2   4|  81M   12M|  18M   69M|   0     0 | 189k  122k
21-07 21:35:20| 11  11  68   4   2   4|  82M   17M|  17M   71M|   0     0 | 188k  121k
21-07 21:35:21|  9   9  72   4   2   4|  87M   14M|  14M   70M|   0     0 | 169k  108k
21-07 21:35:22| 11  11  69   3   2   4|  76M   13M|  17M   70M|   0     0 | 186k  119k
21-07 21:35:23| 12  11  67   4   2   4|  88M   15M|  17M   70M|   0     0 | 186k  122k

CPU 统计

dstat -tc
----system---- ----total-cpu-usage----
     time     |usr sys idl wai hiq siq
21-07 21:39:02|  5   5  85   1   1   2
21-07 21:39:03| 10  11  68   4   2   4
21-07 21:39:04| 10  10  69   4   2   4
21-07 21:39:05| 10  10  69   4   2   5
21-07 21:39:06| 10  10  69   4   2   4
21-07 21:39:07| 14  15  59   4   2   5
21-07 21:39:08| 14  13  62   4   2   4
21-07 21:39:09| 16  15  57   4   3   5
21-07 21:39:10| 16  15  57   4   2   5
21-07 21:39:11| 14  14  61   4   3   5

CPU 区域由以下六个指标组成,各项之和约为 100%,按百分比显示。

字段 中文含义 常见场景与判断方向
usr 用户态 CPU 业务程序自身计算消耗,例如数据处理、校验、压缩、加密、JSON 解析或程序死循环。占用高时可结合 PID 查看具体程序,例如 ls -l /proc/<pid>/exe
sys 内核态 CPU 系统调用、网络协议栈、文件系统、内存管理、NAT、conntrack、容器网络等内核工作。数值高表示内核开销较大。
idl CPU 空闲率 越接近 0,表示 CPU 越接近饱和。需要继续判断是 usrsyswai 还是中断占用较高。
wai I/O 等待 CPU 等待块设备 I/O 完成的时间。持续偏高时,应继续使用 iostat -x 查看磁盘延迟、队列和利用率。
hiq 硬中断 CPU 处理硬件中断的时间,例如网卡、磁盘或其他硬件设备产生的 IRQ。
siq 软中断 常见于网络收发和高 PPS 场景,与 mpstat 中的 %soft 类似。偏高时可结合网卡队列、IRQ、RSS/RPS、RX/TX 丢包一起分析。
观察现象 优先排查方向
usr 业务程序计算、压缩、加密、解析、GC、死循环。
sys 系统调用、网络栈、NAT、conntrack、文件系统、上下文切换。
wai 磁盘延迟、随机 I/O、队列拥塞、底层存储异常。
hiq/siq 网卡中断、网络高 PPS、小包、IRQ 或队列分布不均。
idl 接近 0 CPU 接近饱和,需要结合其他字段判断具体瓶颈。

局限性:dstat -c 默认显示的是整机 CPU 平均值,适合看总体开销,但不适合直观分析单核负载不均。虽然 dstat -C 0,1,2,3 支持指定核心,但核心较多时建议直接使用 mpstat -P ALL 1

常用:mpstat -P all 1
09:50:29 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
09:50:30 PM  all   12.94    0.00   13.12    4.25    2.38    5.00    1.12    0.00    0.00   61.19
09:50:30 PM    0   13.86    0.00   12.87    6.93    2.97    6.93    0.00    0.00    0.00   56.44
09:50:30 PM    1    8.00    0.00   11.00    7.00    2.00    6.00    2.00    0.00    0.00   64.00
09:50:30 PM    2   16.16    0.00   14.14    5.05    2.02    3.03    2.02    0.00    0.00   57.58
09:50:30 PM    3   10.00    0.00    9.00    2.00    2.00    0.00    3.00    0.00    0.00   74.00
09:50:30 PM    4   14.14    0.00   14.14    6.06    3.03    7.07    0.00    0.00    0.00   55.56
09:50:30 PM    5   10.00    0.00   11.00    4.00    1.00    1.00    3.00    0.00    0.00   70.00
09:50:30 PM    6   16.50    0.00   13.59    5.83    1.94    4.85    0.97    0.00    0.00   56.31
09:50:30 PM    7    8.00    0.00   12.00    5.00    3.00    4.00    1.00    0.00    0.00   67.00
09:50:30 PM    8   15.00    0.00   15.00    2.00    3.00    8.00    1.00    0.00    0.00   56.00
09:50:30 PM    9    9.00    0.00   13.00    3.00    2.00    7.00    1.00    0.00    0.00   65.00
09:50:30 PM   10   18.00    0.00   14.00    4.00    3.00    4.00    1.00    0.00    0.00   56.00
09:50:30 PM   11   10.89    0.00   11.88    2.97    2.97    3.96    0.99    0.00    0.00   66.34
09:50:30 PM   12   21.21    0.00   17.17    4.04    3.03    3.03    0.00    0.00    0.00   51.52
09:50:30 PM   13    9.90    0.00   12.87    3.96    1.98    8.91    0.99    0.00    0.00   61.39
09:50:30 PM   14   16.16    0.00   15.15    3.03    3.03    5.05    1.01    0.00    0.00   56.57
09:50:30 PM   15    9.00    0.00   13.00    2.00    2.00    8.00    1.00    0.00    0.00   65.00

磁盘统计

参数 作用 输出含义
-d 启用磁盘统计 显示磁盘每秒读写吞吐量,即 readwrit
-D sdb 指定磁盘 只查看指定设备,多个磁盘可使用逗号分隔。
--disk-tps 显示磁盘操作次数 readswrits 表示每秒完成的读写 I/O 次数,可近似理解为读写 IOPS。
换算项目 公式
吞吐量 吞吐量(MiB/s)= IOPS × 平均 I/O 大小(KiB)÷ 1024
平均单次 I/O 大小 平均 I/O 大小(KiB)= 吞吐量(MiB/s)× 1024 ÷ IOPS
IOPS IOPS = 吞吐量(MiB/s)× 1024 ÷ 平均 I/O 大小(KiB)

通常建议指定单块磁盘观察。PCDN 机器常见系统盘、数据盘并存,部分设备还可能使用 RAID;只看 total 容易掩盖单盘热点,因此推荐通过 -D 指定具体磁盘。

常用:

dstat -tD sdb -d --disk-tps

----system---- --dsk/sdb-- --dsk/sdb--
     time     | read  writ|reads writs
21-07 22:02:30|  32M   13M| 316    40 
21-07 22:02:31|  83M   33M| 961   168 
21-07 22:02:32|  90M   36M| 983    95 
21-07 22:02:33|  90M   29M| 999    70 
21-07 22:02:34|  83M   37M| 931    96 
21-07 22:02:35|  86M   34M| 957    93 
21-07 22:02:36|  96M   49M|1036   202 
21-07 22:02:37|  85M   32M| 928    76

21-07 22:02:32 | 90M 36M | 983 95 为例:

方向 吞吐量 IOPS 平均单次 I/O 计算过程
90 MiB/s 983 次/s 约 94 KiB/次 90 × 1024 ÷ 983 ≈ 94
36 MiB/s 95 次/s 约 388 KiB/次 36 × 1024 ÷ 95 ≈ 388

该数据表现为:读操作次数多、单次读 I/O 较小;写操作次数少、单次写 I/O 较大,符合 PCDN 高频读取、少量大块写入的常见特征。
局限性:无法查看磁盘%util等指标,单一的读写不好判断磁盘瓶颈,,特别是读写延迟,可以结合iostat,iotop排查
iostat -x -1

网络统计

参数 作用 输出字段
-n 显示网络吞吐量 recv 为每秒接收数据量,send 为每秒发送数据量。
-N eth0 指定网卡 只查看指定接口,多个接口可使用逗号分隔。
--net-packets 显示每秒收发包数量 #recv#send,即接收 PPS 和发送 PPS。
分析点 判断方法
吞吐量 判断入流、出流大小以及链路利用率。PCDN 常见发送流量高于接收流量。
PPS 同样带宽下,PPS 越高通常表示平均包越小,CPU、软中断、NAT 和 conntrack 压力可能越高。
平均包大小 平均包大小(Bytes)≈ 吞吐量(MiB/s)× 1024 × 1024 ÷ PPS。
CPU 联动 结合 syshiqsiqidl 判断网络处理是否正在消耗大量 CPU。
错误与丢包 dstat 不直接显示网卡错误、丢包和 TCP 重传,需要结合 ip -s linksar -n EDEVethtool -S 等工具。

常用:

dstat -t -N eth0 -n --net-packets

----system---- --net/eth0- --pkt/eth0-
     time     | recv  send|#recv #send
21-07 22:20:56|   0     0 |   0     0 
21-07 22:20:57|  19M   74M|28.1k 73.8k
21-07 22:20:58|  17M   70M|26.8k 69.7k
21-07 22:20:59|  16M   73M|25.6k 70.9k
21-07 22:21:00|  15M   73M|25.0k 70.6k
21-07 22:21:01|  16M   71M|25.3k 69.7k
21-07 22:21:02|  14M   71M|24.3k 69.5k
21-07 22:21:03|  17M   72M|26.8k 72.4k
21-07 22:21:04|  14M   73M|24.5k 70.5k
21-07 22:21:05|  13M   70M|23.1k 67.3k

页面与系统统计

参数 作用 主要字段
-g 页面调入、调出统计 inout,用于观察分页活动;不要与普通磁盘吞吐直接混为一谈。
-y 系统事件统计 int 为每秒中断次数,csw 为每秒上下文切换次数。

帮助

附件:dstat --help

用法:
  dstat [-afv] [选项...] [刷新间隔 [刷新次数]]

功能:
  一个用于生成系统资源统计信息的综合性能监控工具。


Dstat 选项:

  -c, --cpu
      启用 CPU 使用率统计。

     -C 0,3,total
      指定要显示的 CPU,例如显示 CPU0、CPU3 和全部 CPU 汇总。
      多个 CPU 之间用逗号分隔。

  -d, --disk
      启用磁盘吞吐量统计。
      默认显示磁盘每秒读取和写入的数据量。

     -D total,hda
      指定要统计的磁盘,例如显示 hda 和所有磁盘汇总。
      多个设备之间用逗号分隔。

  -g, --page
      启用页面调入、调出统计。

  -i, --int
      启用中断统计。

     -I 5,eth2
      指定要显示的中断。
      例如显示 5 号中断,以及 eth2 网卡使用的中断。

  -l, --load
      启用系统负载统计。
      通常显示 1 分钟、5 分钟和 15 分钟负载。

  -m, --mem
      启用内存使用情况统计。

  -n, --net
      启用网络吞吐量统计。
      显示每秒接收和发送的数据量。

     -N eth1,total
      指定要统计的网络接口。
      例如显示 eth1 和所有网卡汇总。

  -p, --proc
      启用进程状态统计。
      通常显示可运行、阻塞和新创建的进程数量。

  -r, --io
      启用 I/O 操作统计。
      显示已经完成的 I/O 请求数量,即读写操作次数。

  -s, --swap
      启用 Swap 交换空间统计。

     -S swap1,total
      指定要统计的 Swap 设备。
      例如显示 swap1 和所有 Swap 汇总。

  -t, --time
      启用时间和日期输出。

  -T, --epoch
      启用 Unix 时间戳输出。
      显示从 1970-01-01 00:00:00 UTC 开始累计的秒数。

  -y, --sys
      启用系统统计。
      通常显示每秒中断次数和上下文切换次数。


其他统计选项:

  --aio
      启用异步 I/O(AIO)统计。

  --fs, --filesystem
      启用文件系统统计。
      通常包括打开文件数、inode 等信息,具体取决于版本。

  --ipc
      启用进程间通信 IPC 统计。
      例如消息队列、信号量和共享内存。

  --lock
      启用文件锁统计。

  --raw
      启用原始套接字统计。

  --socket
      启用 Socket 套接字统计。

  --tcp
      启用 TCP 状态统计。

  --udp
      启用 UDP 状态统计。

  --unix
      启用 Unix Domain Socket 统计。

  --vm
      启用虚拟内存统计。


插件选项:

  --插件名称
      根据插件名称启用某个插件。
      具体插件名称可以查看手册或者使用 --list。

  --list
      列出当前系统上所有可用的 dstat 插件。


组合选项:

  -a, --all
      等同于:

      -c -d -n -g -y

      即同时显示:
      CPU、磁盘、网络、页面和系统统计。

      这也是直接执行 dstat 时的默认显示内容。

  -f, --full
      自动展开以下设备列表:

      -C    CPU 列表
      -D    磁盘列表
      -I    中断列表
      -N    网卡列表
      -S    Swap 列表

      例如自动显示所有 CPU、磁盘、网卡等,而不是只显示 total。

  -v, --vmstat
      等同于:

      -p -m -g -d -s -c -D total

      以类似 vmstat 的方式显示:
      进程、内存、页面、磁盘、Swap、CPU 和磁盘汇总。


数值显示选项:

  --bits
      对原本以字节表示的数据强制使用 bit 显示。

      例如网络流量默认可能显示 MiB/s,
      使用 --bits 后可以按 Mbit/s 显示。

  --float
      强制使用浮点数显示数值。

  --integer
      强制使用整数显示数值。


终端显示选项:

  --bw, --blackonwhite
      调整终端颜色,使其适合白色背景、黑色文字的终端。

  --nocolor
      禁用彩色输出。
      同时隐含启用 --noupdate。

  --noheaders
      禁用重复打印表头。

  --noupdate
      禁用当前行的中间刷新。
      每个采样周期只输出最终结果。

  --output 文件
      将统计结果以 CSV 格式写入指定文件。

  --profile
      在退出 dstat 时显示 dstat 自身的性能分析统计。


位置参数:

  delay
      每次刷新之间的间隔时间,单位为秒。
      默认值为 1 秒。

  count
      退出前显示多少次统计结果。
      默认不限制,一直运行,直到按 Ctrl+C 停止。

常用工具对比

工具 最适合查看的内容
dstat 快速综合总览,判断 CPU、磁盘、网络、内存等问题方向。
vmstat CPU、运行队列、内存、Swap 和 I/O 等待。
iostat -x 磁盘延迟、队列深度、吞吐量和设备利用率。
mpstat 每个 CPU 核心、硬中断和软中断分布。
pidstat 精确到进程或线程的 CPU、内存、I/O 和上下文切换。
sar 历史数据、持续统计、网卡流量、错误和 TCP 指标。
free 当前内存和 Swap 容量使用情况。
ss TCP、UDP 和 Socket 连接状态。
top/htop 交互式查看进程和实时资源占用。
```text
可用字段(用于 --output 或 -o):

        NAME  设备名称
       KNAME  内核内部设备名称
     MAJ:MIN  主设备号:次设备号
      FSTYPE  文件系统类型
  MOUNTPOINT  设备挂载位置
       LABEL  文件系统标签
        UUID  文件系统 UUID
    PARTTYPE  分区类型 UUID
   PARTLABEL  分区标签
    PARTUUID  分区 UUID
   PARTFLAGS  分区标志

          RA  设备预读大小(read-ahead)
          RO  是否为只读设备
          RM  是否为可移除设备
     HOTPLUG  是否为热插拔设备,例如 USB、PCMCIA 等

       MODEL  设备型号
      SERIAL  磁盘序列号
        SIZE  设备容量
       STATE  设备状态
       OWNER  设备节点所属用户
       GROUP  设备节点所属用户组
        MODE  设备节点权限

   ALIGNMENT  对齐偏移量
      MIN-IO  最小 I/O 大小
      OPT-IO  最优 I/O 大小
     PHY-SEC  物理扇区大小
     LOG-SEC  逻辑扇区大小

        ROTA  是否为旋转磁盘
               1 = 机械硬盘
               0 = 固态硬盘或非旋转设备

       SCHED  I/O 调度器名称
     RQ-SIZE  请求队列大小
        TYPE  设备类型,例如 disk、part、lvm、crypt、rom

    DISC-ALN  丢弃操作(discard/TRIM)对齐偏移量
   DISC-GRAN  丢弃操作最小粒度
    DISC-MAX  单次丢弃操作支持的最大字节数
   DISC-ZERO  丢弃后数据是否保证为零

       WSAME  WRITE SAME 操作支持的最大字节数
         WWN  全球唯一存储设备标识符
        RAND  是否增加随机性
      PKNAME  父设备的内核内部名称

        HCTL  SCSI 设备地址:
              Host:Channel:Target:Lun
              主机:通道:目标:LUN

        TRAN  设备传输接口类型
              例如 sata、sas、usb、nvme、ata

  SUBSYSTEMS  设备所属的内核子系统链,已去重
         REV  设备固件或硬件修订版本
      VENDOR  设备厂商

更多详细信息请查看:

    man lsblk
```

常用

系统综合总览

dstat -tcdngy 1

查看cpu、网卡吞吐流量,网络数据包pps

dstat -tcn -N eth0 --net-packets 1

查看磁盘吞吐和iops

dstat -td -D sdb --disk-tps 1

内存和 Swap

dstat -tms 1
© 版权声明

相关文章