◆ 確認方法
topコマンド
操作
入力 | *説明 |
---|---|
M | メモリ使用量が多いもの順 |
N | プロセスID順 |
P | CPUの使用時間率の長いもの順 |
R | ソート順の逆転 |
T | 実行時間が長い順 |
q | topコマンドの終了 |
s | 表示の更新間隔(単位は秒) |
u | 特定のユーザー権限のプロセスだけ |
1 | CPU毎の利用率を表示 |
表示項目
項目 | 説明 |
---|---|
load average | 左から順に1、5、15分間の実行待ちプロセスの平均数(uptime) |
us | ユーザが実行しているプロセスの割合 |
id | CPUが休んでいる割合 |
wa | File I/Oの待ち割。ディスクI/Oかネットワーク |
- load averageの数字がCPU数より大きい場合サーバは重いと判断
- usの割合が大きいとしたら、サーバ重い原因はCUPがボトルネック
- idの割合大きい場合、CPUがあまり使ってない状態です。それでもサーバが重いなら、原因は別の場所
- waの割合大きい場合、ディスクI/Oかネットワークがボトルネックになっている
vmstat コマンド
一番最初の行は, 前回起動時からの平均値で, 2行目以降は実行した時点での状態を表示しています。
オプションでインターバルを指定
項目 | 説明 |
---|---|
r | 実行待ちプロセス数 |
b | 割り込み不可プロセス数(多くの場合 I/O 待ちプロセス) |
swpd | スワップ使用量 |
free | 空きメモリ量 |
si | ディスクからのメモリスワップ量 |
so | ディスクへのメモリスワップ量 |
bi | ブロックデバイスからの読込みブロック数 |
bo | ブロックデバイスへの書込みブロック数 |
us | ユーザCPU利用率 |
sy | システムCPU利用率 |
id | CPUアイドル率 |
wa | IO待ちCPU利用率 |
-
r のプロセスが多く us の CPU利用率が高い
実行可能プロセスが CPU 待ちタスクが多すぎて捌ききれていない -
si, so が多発している
メモリ不足。 データベースサーバはメモリ不足によるスワップを起こしやすい -
b のプロセスが多く, wa の CPU利用率が高い
I/O待ちをしているプロセスがたくさんある -
b のプロセスがあまりにも多く, CPU利用率や bi/bo の数値が低い場合
サーバに何か異変が起こっている場合が多いです。この場合は, 原因となっているプロセスを top や ps コマンドで特定し, プロセスを kill しましょう。
sar
項目 | 説明 |
---|---|
r | 実行待ちプロセス数 |
sar -u | CPU使用率を表示する |
sar -b | ディスクI/Oの使用状況を表示する |
sar -W | スワップ頻度を表示する |
sar -q | ロードアベレージやrunqの大きさを表示する |
sar -r | メモリの使用状況を表示する |
sar -P {0, 1, … | ALL} | プロセッサごとに統計値を表示する |
sar -f /var/log/sa/sann | 日付を指定して過去の統計情報を表示する |
sar -A | すべての情報を表示する |
-
%userが高い場合は、ユーザー空間のプロセスがCPUを消費しています。
よくある要因としては「純粋にCPUパワーが必要な処理(数値計算、画像や動画の変換など)を行っている」ことや「意図しない暴走でCPUを消費している」ことが考えられます。 -
%systemが高い場合は、システム空間のプロセスがCPUを消費しています。
よくある要因としては「I/O待ちでCPU時間を消費している」ことや「大きめのプロセスを頻繁にforkしている」ことが考えられます。 -
%iowaitと%systemがともに高い場合は、readやwriteの応答を待ってI/O待ちが発生しています。
これは、I/O待ちが発生するとreadやwriteのシステムコールに要する時間も増えるため、%systemも上昇するためです。 -
%iowaitが高いにもかかわらず%systemが低い場合は、物理メモリ量を超えてメモリを使ってしまい、スワップが大量に発生している可能性があります。
この場合は、sar -Wコマンドでスワップ頻度を、freeコマンドでメモリ使用状況を、topコマンドをメモリ使用率でソートしてメモリを消費しているプロセスを確認します。