運維之道 | dstat性能監控工具常用參數分析

dstat性能監控工具常用參數分析

一、dstat性能工具簡介

  • 1、vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監控;
    2、iostat,用於報告中央處理器(CPU)統計信息和整個系統、適配器、tty 設備、磁盤和 CD-ROM 的輸入/輸出統計信息;
    3、Netstat是控制檯命令,是一個監控TCP/IP網絡的非常有用的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的狀態信息;
    4、nfsstat命令顯示關於NFS和到內核的遠程過程調用(RPC)接口的統計信息,也可以使用該命令重新初始化該信息;
    5、ifstat工具是個網絡接口監測工具,比較簡單看網絡流量;
  • dstat是一個用來替換vmstat、iostat、netstat、nfsstat和ifstat這些命令的工具,是一個全能系統信息統計工具;
  • 與sysstat相比,dstat擁有一個彩色的界面,在手動觀察性能狀況時,數據比較顯眼容易觀察;
  • dstat支持即時刷新,也可自定義刷新時間,以及數量;
  • 和sysstat相同的是,dstat也可以收集指定的性能資源,例如 dstat -c 即顯示CPU的使用情況;

二、dstat性能工具安裝

[root@localhost ~]# yum install -y dstat

三、dstat工具參數說明

在這裏插入圖片描述

參數 作用
-c, --cpu 顯示CPU系統佔用,用戶佔用,空閒,等待,中斷,軟件中斷等信息
-C 0,3,total 統計指定CPU或彙總信息
-d, --disk 顯示磁盤情況
-D total,hda 統計指定磁盤或彙總信息
-g, --page 顯示頁面使用情況
-i, --int 顯示中斷統計
-I 5,eth2 統計系統負載情況,包括1分鐘、5分鐘、15分鐘平均值
-l, --load enable load stats
-m, --mem 顯示內存情況
-n, --net 顯示網絡情況
-N eth1,total 可以指定網絡接口
-p, --proc 統計進程信息,包括runnable、uninterruptible、new
-r, --io 統計I/O請求情況,包括讀寫請求
-s, --swap 顯示swap情況
-S swap1,total 可以指定多個swap
-t, --time 顯示統計時時間,對分析歷史數據非常有用
-y, --sys 統計系統信息,包括中斷、上下文切換
–ipc 報告IPC消息隊列和信號量的使用情況
–lock 統計lock信息
–socket 用來顯示tcp、udp、raw端口狀態
–raw 統計raw信息
–tcp 統計tcp信息
–udp 統計udp信息
–unix 統計unix信息
–output file 寫入到CVS文件中,這個比較常用

四、dstat工具使用示例

dstat 2 5
每兩秒顯示一次,一共只顯示5條信息
在這裏插入圖片描述

1、CPU相關參數

-l, --load
展示1分鐘、5分鐘和15分鐘內的平均負載
在這裏插入圖片描述

-c, --cpu
展示cpu狀態:usr用戶佔比、sys系統佔比、idl空閒佔比、wai等待次數,這四個加和是100,
hiq硬中斷次數,siq軟中斷次數
在這裏插入圖片描述

dstat -cC 0,3,total : -C 必須和-c配合使用
分別展示 第0顆、第3顆、總體cpu狀態
在這裏插入圖片描述

–snooze
展示每秒的CPU時鐘頻率,
腳本位置/usr/share/dstat/dstat_snooze.py
在這裏插入圖片描述

2、進程相關參數

  • 展示當前時刻的進程狀態:可運行態(就緒態)
    無法中斷的睡眠態(等待態),新進程;
  • 文檔原文爲: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最高的進程。

-p, --proc
統計進程信息,包括runnable、uninterruptible、new 在這裏插入圖片描述

–proc-count
展示進程數量,側面反映系統負載
在這裏插入圖片描述

-y, --sys
1、展示系統中斷次數int和上限文切換次數csw;
2、上下文切換:CPU運行任務1,切換運行就緒態任務2;
3、任務1可能變成就緒態(CPU時間片耗光),也可能變成等待態(等待IO等非CPU資源);
4、CPU的處理時間片較短,中斷和上下文切換次數數字會很大,也能從側面反映負載,如果中斷和上下文切換暴漲,表明負載過大,或者程序設計不合理,或者kernel級別的BUG;
在這裏插入圖片描述

-i, --int
展示中斷狀態,如下圖,設備號爲18、19和56的設備產生了中斷,
查看/proc/interrupts確定設備號對應的設備信息。
在這裏插入圖片描述

dstat -i -I 18,19 :-I 必須和-i配合使用
指定設備號展示中斷狀態
在這裏插入圖片描述

–ipc
展示IPC(進程間通信)狀態,包括msg消息隊列 、sem線程隊列、shm共享內存使用
在這裏插入圖片描述

–dbus number of dbus connections (needs python-dbus)
展示dbus連接數
在這裏插入圖片描述

3、進程最耗資源統計
以下腳本都存在於目錄/usr/share/dstat中

–top-cpu (-t 代表時間)
展示最耗CPU的進程名和CPU佔比
在這裏插入圖片描述

–top-cpu-adv (-t 代表時間)
展示最耗CPU的進程名、PID和CPU佔比以及讀寫信息,
這個讀寫信息是一個差值,推測是內存的讀寫。
在這裏插入圖片描述

–top-cputime (-t 代表時間)
展示耗費CPU時間最多的進程名和耗費時間(ms)
在這裏插入圖片描述

–top-cputime-avg (-t 代表時間)
展示平均最耗CPU時間片的進程名和時間耗費(ms)
在這裏插入圖片描述

–top-latency (-t 代表時間)
顯示延遲最高的進程名和延遲時間(ms)
在這裏插入圖片描述

–top-latency-avg
顯示平均延遲最高的進程名和延遲時間(ms)
在這裏插入圖片描述

–top-bio
展示當前最耗block I/O的進程名和讀寫的容量
在這裏插入圖片描述

–top-bio-adv
展示當前最耗block I/O的進程名、PID和讀寫容量以及CPU佔比
即最高磁盤IO的進程
在這裏插入圖片描述

–top-io
展示最耗IO的進程名和IO讀寫信息,
被統計的IO信息包括blockIO和內存還有網絡等全部,
因此如果要判定最耗磁盤讀寫的進程,應該使用–top-bio,
某一時刻,最耗IO和最耗blockIO的進程不一定是同一個。
在這裏插入圖片描述

–top-io-adv
展示最耗IO的進程名、PID和讀寫信息以及CPU使用佔比
在這裏插入圖片描述

–top-mem
展示最耗內存的進程名和內存消耗
在這裏插入圖片描述

–top-oom
展示最先OOM殺死的進程,OOM是內存回收機制
在這裏插入圖片描述

–top-childwait
展示等待子進程相應最多的進程,
即等待子進程最多的父進程。
show process waiting for child the most
在這裏插入圖片描述

4、內存相關參數

-m, --mem
展示內存狀態,包括used, buffers, cache, free
在這裏插入圖片描述

–vm (hard pagefaults, soft pagefaults, allocated, free)
展示虛擬內存狀態,包括:majpf(hard pagefaults),
minpf(soft pagefaults),alloc和free,具體意義未知。
在這裏插入圖片描述

5、換頁空間相關參數

-g, --page
展示內存到換頁空間(swap)的使用情況,
從內存到換頁是out,從換頁到內存是in,
只有頻繁的in和out才表明內存不足。
在這裏插入圖片描述

6、網絡相關參數

-n, --net
展示總體網絡收發狀態,折算後附帶單位友好展示
在這裏插入圖片描述

dstat -n -N eth0,total : -N 必須和-n配合使用
當存在多網卡時,可以分別指定展示各個網卡的收發狀態
在這裏插入圖片描述

–net-packets
展示收發的包數量
在這裏插入圖片描述

–socket
展示套接字狀態,包括tot總數量、tcp套接字數量、udp套接字數量、
raw原始套接字數量、frg(ip-fragments IP碎片)套接字數量
在這裏插入圖片描述

–raw
展示原始套接字(raw sockets接收本機網卡上的數據幀或者數據包的套接字)狀態
在這裏插入圖片描述

–tcp (listen, established, syn, time_wait, close)
展示tcp網絡連接狀態,lis監聽的數量、act(established)活動的確立的數量、
synTCP/IP的握手數量、tim(time_wait)發起關閉後的等待關閉態數量、
clo關閉態數量,即命令netstat -tpln對應記錄的摟取合併
在這裏插入圖片描述

–udp
展示udp網絡連接狀態,包括lis監聽數量和act活動數量
在這裏插入圖片描述

–unix (datagram, stream, listen, active)
展示數據報(實現UDP)、虛電路(實現TCP/IP)數量,包括:
dgm數據報數量、str虛電路數量、lis虛電路監聽數量、act虛電路活動數量
在這裏插入圖片描述

7、硬盤相關參數

-d, --disk
展示磁盤設備讀寫總計,折算後附帶單位友好展示
在這裏插入圖片描述

-D 必須和-d配合使用:dstat -dD sda,sda2,total
分別展示設備sda和sda2以及總體的讀寫狀態
在這裏插入圖片描述

-r, --io
展示I/O請求狀態,包括讀請求次數和寫請求次數
在這裏插入圖片描述

–aio
展示異步io狀態速度
在這裏插入圖片描述

–disk-tps
展示每個磁盤每秒事物讀寫數量
在這裏插入圖片描述

–disk-util
展示每個磁盤使用百分比
在這裏插入圖片描述

8、文件系統參數

–freespace
展示每個文件系統的使用情況
在這裏插入圖片描述

–fs
展示文件系統狀態,包括打開的文件數量和正在使用的inode數量
在這裏插入圖片描述

9、MYSQL相關參數

–mysql5-conn
展示mysql庫的已經打開的連接數數量和佔比,
數據由以下mysql庫SQL提供:
show global variables like ‘max_connections’;
show global status like ‘Threads_connected’;
ThCo當前打開的連接數數量,%Con數量佔總連接數的百分比

–mysql5-io
展示mysql庫與所有客戶端的交互字節數:
recv(Bytes_received)從所有客戶端接收到的字節數,
sent(Bytes_sent)發送給所有客戶端的字節數,
數據由以下mysql庫SQL提供:
show global status like ‘Bytes_%’;

–mysql5-keys
展示mysql庫的鍵緩存信息:
used(Key_blocks_used)鍵緩存內使用的塊數量,
該值爲高水位線標記,說明已經同時最多使用了多少塊。
read(Key_reads)從硬盤讀取鍵的數據塊的次數,
如果Key_reads較大,則Key_buffer_size值可能太小,
可以用Key_reads/Key_read_requests計算緩存損失率。
writ(Key_writes)向硬盤寫入將鍵的數據塊的物理寫操作的次數。
rreq(Key_read_requests)從緩存讀鍵的數據塊的請求數。
wreq(Key_write_requests)將鍵的數據塊寫入緩存的請求數。
數據由以下mysql庫SQL提供:
show global status like ‘Key_%’;

–mysql-keys
和參數–mysql5-keys功能相似,但只展示當前會話的keys信息,
數據由以下mysql庫SQL提供:
show status like ‘Key_%’;

–mysql-io
和參數–mysql5-io功能相似,但只展示當前會話的IO信息,
數據由以下mysql庫SQL提供:
show status like ‘Bytes_%’;

10、dstat數據展示相關參數

  • –noheaders
    監控項的名稱和參數信息(頭兩行信息)只輸出一次,
    數據滿屏後不再重複輸出。
  • –output outputfile.csv
    將監控信息以csv格式寫入文件
  • –float
    使用小數顯示數據,與參數–integer互斥
  • –integer
    使用整數顯示數據,與參數–float互斥
  • –bw, --blackonwhite
    改變數據輸出的顏色,白色背景
  • –nocolor
    關閉彩色顯示
  • –noupdate
    當數據刷新間隔大於1秒時,當前數據行會不斷刷新,
    使用該參數關閉刷新功能。
  • –profile
    記錄dstat命令調用的組件和時間資源消耗,生成日誌文件,
    例:dstat --profile 1 5
  • –list
    列出內部和外部插件名稱。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章