【画像解説】dstatのtopオプションで解決!RHEL9サーバのトラブル対応術

【画像解説】dstatのtopオプションで解決!RHEL9サーバのトラブル対応術 Linuxサーバ

dstatは、CPU使用率、メモリ使用量、ディスクI/O、ネットワーク帯域など、様々なシステム指標を一目で確認できるコマンドラインツールです。

注目すべきは、--topオプションを活用するとリアルタイムでのシステムの状態、障害が発生した際に迅速な対応を「プロセス単位」でかつ「負荷が高いもの」を中心に確認することが可能になります。

今から--topオプションを活用した4つのコマンドを中心にネットワーク帯域調査・出力結果のファイル保存方法を合わせた、6つのdstatコマンドを紹介します。

今回、紹介する6つのdstatのオプションだけを覚えておけば、サーバのレスポンス・ネットワーク帯域の障害が発生したときに事足ります。



※dstatが利用できない場合はこちらを確認ください。

スポンサーリンク

厳選6つのdstatオプション表

dstatでこれだけ覚えておけば事足りるオプションの説明です。

コマンド 説明
dstat -ta --top-cpu-adv システム時間とCPU使用率の詳細な分析を提供し、CPUを最も多く使用しているプロセスを表示します。
dstat -ta --top-io --top-bio システム時間、最も多くのディスクI/OおよびブロックI/Oを行っているプロセスを表示します。
dstat -t -gs --mem --vm --ipc --top-mem システム時間、一般統計、メモリ使用状況、仮想メモリ、IPC統計、そしてメモリ使用量が最も高いプロセスを表示します。
dstat -tdng --file --lock --top-io --top-bio システム時間、ディスクおよびネットワークのグループ統計、ファイルおよびロック統計、入出力が最も多いプロセス、ブロックI/Oが最も多いプロセスを表示します。
dstat -tn --socket --tcp --udp --unix -N 【enp0s3】 システム時間、ネットワーク統計、ソケット統計(TCP、UDP、UNIX)、指定されたネットワークインターフェース(enp0s3)のトラフィックを表示します。
dstat --output dstat.csv dstatの出力をCSVファイル(dstat.csv)に保存します。

dstatのオプションは自由に組み合わせて自分が表示させたい項目を出力できます。

dstat -ta --top-io --top-bio -N enp0s3

各コマンドの「実行結果」と「出力画像」


「dstat -ta --top-cpu-adv」コマンド

システム時間とCPU使用率の詳細な分析を提供し、CPUを最も多く使用しているプロセスを表示します。

dstat -ta --top-cpu-adv


■「yes > /dev/null &」を実行しCPU負荷をかけた状態


■コマンド実行時の各項目の意味

カテゴリ 項目 意味
System time 現在の時刻を表示します。
Total Usage usr CPUがユーザーモードで作業するのに使われる時間の割合をパーセントで表示します。
sys CPUがシステムモードで作業するのに使われる時間の割合をパーセントで表示します。
idl CPUがアイドル状態の時間の割合をパーセントで表示します。
wai CPUがI/O操作の完了を待っている時間の割合をパーセントで表示します。
stl CPUが他の仮想マシンによって使用された時間の割合(「盗まれた時間」)をパーセントで表示します。
Disk/Total read ディスクからの総読み取り量をバイトで表示します。
writ ディスクへの総書き込み量をバイトで表示します。
Net/Total recv ネットワークを通じて受信した総データ量をバイトで表示します。
send ネットワークを通じて送信した総データ量をバイトで表示します。
Paging in ページングによるメモリへのデータ読み込み量(ページイン)を表示します。
out ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。
System int システム全体の割り込み回数を表示します。
csw システム全体のコンテキストスイッチの回数を表示します。
Most Expensive CPU Process process 最も多くのCPUリソースを消費しているプロセスの名前を表示します。
pid 上記プロセスのプロセスIDを表示します。
cpu 上記プロセスが消費しているCPUの割合をパーセントで表示します。





「dstat -ta --top-io --top-bio」コマンド

システム時間、最も多くのディスクI/OおよびブロックI/Oを行っているプロセスを表示します。

dstat -ta --top-io --top-bio


■「scp」を実行してサーバへファイルコピーしてDiskのI/Oに負荷をかけた状態


■コマンド実行時の各項目の意味

カテゴリ 項目 意味
System time 現在の時刻を表示します。
Total Usage usr CPUがユーザーモードで作業するのに使われる時間の割合をパーセントで表示します。
sys CPUがシステムモードで作業するのに使われる時間の割合をパーセントで表示します。
idl CPUがアイドル状態の時間の割合をパーセントで表示します。
wai CPUがI/O操作の完了を待っている時間の割合をパーセントで表示します。
stl CPUが他の仮想マシンによって使用された時間の割合(「盗まれた時間」)をパーセントで表示します。
Disk/Total read ディスクからの総読み取り量をバイトで表示します。
writ ディスクへの総書き込み量をバイトで表示します。
Net/Total recv ネットワークを通じて受信した総データ量をバイトで表示します。
send ネットワークを通じて送信した総データ量をバイトで表示します。
Paging in ページングによるメモリへのデータ読み込み量(ページイン)を表示します。
out ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。
System int システム全体の割り込み回数を表示します。
csw システム全体のコンテキストスイッチの回数を表示します。
Most Expensive I/O process 最も多くのディスクI/Oリソースを使用しているプロセスの名前と詳細を表示します。
block I/O process 最も多くのブロックI/O操作を行っているプロセスの名前と詳細を表示します。





「dstat -t -gs --mem --vm --ipc --top-mem」コマンド

システム時間、一般統計、メモリ使用状況、仮想メモリ、IPC統計、そしてメモリ使用量が最も高いプロセスを表示します。

dstat -t -gs --mem --vm --ipc --top-mem


■「stress --vm 2 --timeout 5」を実行してメモリに負荷をかけた状態


■コマンド実行時の各項目の意味

カテゴリ 項目 意味
System time 現在の時刻を表示します。
Paging in ページングによるメモリへのデータ読み込み量(ページイン)を表示します。
out ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。
Total used 使用中の総メモリ量を表示します。
free 空きメモリ量を表示します。
Memory Usage used 物理メモリの使用量を表示します。
free 物理メモリの空き容量を表示します。
buf バッファに使用されているメモリ量を表示します。
cach キャッシュに使用されているメモリ量を表示します。
Virtual Memory majpf メジャーページフォルトの回数を表示します。これは、ディスクからデータを読み込む必要がある重大なページフォルトです。
minpf マイナーページフォルトの回数を表示します。これは、ページがメモリ内に既に存在する場合の軽微なページフォルトです。
alloc 割り当てられた仮想メモリ量を表示します。
free 未使用の仮想メモリ量を表示します。
SysV IPC msg システムV IPCメッセージキューに関する情報を表示します。
sem システムV IPCセマフォに関する情報を表示します。
shm システムV IPC共有メモリに関する情報を表示します。
Most Expensive memory process 最も多くのメモリを使用しているプロセスの名前を表示します。





「dstat -tdng --file --lock --top-io --top-bio」コマンド

システム時間、ディスクおよびネットワークのグループ統計、ファイルおよびロック統計、入出力が最も多いプロセス、ブロックI/Oが最も多いプロセスを表示します。

dstat -tdng --file --lock --top-io --top-bio


■「stress --cpu 2 --io 1 --vm 2 --vm-bytes 512M --hdd 2 --hdd-bytes 1G --timeout 10」を実行してCPU/メモリ/Disk I/Oに負荷をかけた状態


■コマンド実行時の各項目の意味

カテゴリ 項目 意味
System time 現在の時刻を表示します。
Disk/Total read ディスクからの総読み取り量をバイトで表示します。
writ ディスクへの総書き込み量をバイトで表示します。
Net/Total recv ネットワークを通じて受信した総データ量をバイトで表示します。
send ネットワークを通じて送信した総データ量をバイトで表示します。
Paging in ページングによるメモリへのデータ読み込み量(ページイン)を表示します。
out ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。
Filesystem files ファイルシステムに現在開かれているファイルの総数を表示します。
inodes ファイルシステムに現在使用中のinodeの総数を表示します。
File Locks pos ポジティブなファイルロックの数を表示します(ロックされているファイル)。
lck ファイルロック待ちのプロセスの数を表示します。
rea 読み取りロックが適用されているファイルの数を表示します。
wri 書き込みロックが適用されているファイルの数を表示します。
Most Expensive I/O process 最も多くのディスクI/Oリソースを使用しているプロセスの名前と詳細を表示します。
block I/O process 最も多くのブロックI/O操作を行っているプロセスの名前と詳細を表示します。





「dstat -tn --socket --tcp --udp --unix -N 【インターフェース名】」コマンド

システム時間、ネットワーク統計、ソケット統計(TCP、UDP、UNIX)、指定されたネットワークインターフェース(enp0s3)のトラフィックを表示します

dstat -tn --socket --tcp --udp --unix -N enp0s3


■「SCP」を実行してサーバへファイルコピーしてNW負荷をかけた状態


■コマンド実行時の各項目の意味

カテゴリ 項目 意味
System time 現在の時刻を表示します。
Net/enp0s3 recv 指定されたネットワークインターフェース(enp0s3)で受信した総データ量をバイトで表示します。
send 指定されたネットワークインターフェースで送信した総データ量をバイトで表示します。
Sockets tot システム上の全てのソケットの合計数を表示します。
tcp TCPソケットの数を表示します。
udp UDPソケットの数を表示します。
raw RAWソケットの数を表示します。
frg フラグメント化されたソケットの数を表示します。
TCP Sockets lis TCPでリスニング(待機)状態のソケットの数を表示します。
act TCPでアクティブ(接続されている)ソケットの数を表示します。
syn SYN状態にあるTCPソケットの数を表示します(接続を確立しようとしている状態)。
tim TIME_WAIT状態のTCPソケットの数を表示します(接続が終了した後、一定期間待機している状態)。
clo CLOSE状態のTCPソケットの数を表示します(接続が閉じられた状態)。
UDP lis UDPでリスニング状態のソケットの数を表示します。
act UDPでアクティブなソケットの数を表示します。
UNIX dgm UNIXドメインのデータグラムソケットの数を表示します。
str UNIXドメインのストリームソケットの数を表示します。
lis UNIXドメインでリスニング状態のソケットの数を表示します。
act UNIXドメインでアクティブなソケットの数を表示します。





「dstat --ta --top-cpu --output dstat.csv」コマンド

dstatの出力をCSVファイル(dstat.csv)に保存します。

dstat --ta --top-cpu --output dstat.csv


■「dstat」コマンドを実行して標準出力されるデータをcsvファイルに保存した状態

コメント

タイトルとURLをコピーしました