導入
個々のプロセスではなく、「サーバー全体の元気度」を見たいときがあります。CPU は忙しい? メモリは足りてる? ディスクは空いてる?——それぞれを見るのが top(負荷)・free(メモリ)・df(ディスク)です。「サーバーが重い」の正体を突き止める三種の神器です。
説明
top は、CPU・メモリの状況と、負荷の高いプロセスを上から順に見せてくれます(本物は画面が更新され続ける対話型。ここでは瞬間のスナップショットを表示します)。
top
上部の load average(負荷の平均)と %Cpu、MiB Mem に注目します。下の一覧は %CPU の高い順。暴走している python3 train.py が上位に来ているのが分かります。ps aux | grep が「特定を名指しで探す」のに対し、top は「今いちばん重いのは何かを俯瞰する」道具です。
メモリの空きを見るのが free です。-h(human-readable)で読みやすい単位になります。
free -h
Mem: 行の available(実際に使える空き)が重要です。ここが極端に少ないと、サーバーは新しい処理をさばけず重くなります。
ディスクの空きを見るのが df(disk free)です。これも -h を付けます。
df -h
Use%(使用率)が 100% に近いと危険信号。ログが溜まりすぎてディスクが満杯になり、サービスが止まる——というのは、現場でよくある障害です(だからログの管理が大事。第9章)。
flowchart LR
Q["サーバーが重い/おかしい"] --> T["top<br/>CPU負荷は?<br/>どのプロセスが重い?"]
Q --> F["free -h<br/>メモリは足りてる?"]
Q --> D["df -h<br/>ディスクは空いてる?"]
「重い」と言われたら、まず
top(CPU)→free(メモリ)→df(ディスク)の3点を確認する、と手順化しておくと迷いません。原因の切り分けが、当てずっぽうではなく「見て確かめる」に変わります。
やってみよう
top を打って、上部の負荷情報と、%CPU 順に並んだプロセス(暴走中の python3 が上位)を確認しましょう。free -h でメモリの available、df -h でディスクの Use% を見て、「サーバー全体の元気度」を3つの角度から眺めてください。
演習
サーバーのディスク使用量・空き容量を、人が読みやすい単位で表示してください。
ヒント1を見る
ディスクの空きは df、読みやすい単位は -h です。
ヒント2を見る
df -h