目次
はじめに
「Linuxサーバーの状態確認って、どこを見ればいいの?」
「topコマンドを叩いたけど、略語だらけで何が何だかわからない...」
初心者インフラエンジニアなら誰もが通る道ですよね。この記事では、サーバー監視の基本中の基本であるtopコマンドを、実際の出力を見ながら1行ずつ解説していきます。
topコマンドとは
topコマンドは、Linuxサーバーの総合健康診断ツールです。
top
CPU・メモリ・プロセスの状態を一画面でリアルタイムに確認でき、サーバー監視の基本中の基本となるコマンドです。
topコマンドの出力を1行ずつ解説
実際の出力例を見ながら解説していきます。
top - 12:33:44 up 1 day, 16:28, 1 user, load average: 0.10, 0.08, 0.05
Tasks: 158 total, 1 running, 156 sleeping, 0 stopped, 1 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.4 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7830.6 total, 5925.2 free, 768.1 used, 1446.3 buff/cache
MiB Swap: 9011.2 total, 9011.2 free, 0.0 used. 7062.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6337 user 20 0 634324 28192 21292 S 2.0 0.4 0:12.34 some-process
1行目: システム稼働時間とロードアベレージ
top - 12:33:44 up 1 day, 16:28, 1 user, load average: 0.10, 0.08, 0.05
-
12:33:44- 現在時刻 -
up 1 day, 16:28- サーバー起動から1日16時間28分経過 -
1 user- ログインユーザー数 -
load average: 0.10, 0.08, 0.05- 過去1分、5分、15分の平均負荷
load averageって何?
「CPUの待ち行列の長さ」を表す数値です。詳しくは次のセクションで解説します!
2行目: プロセスの状態
Tasks: 158 total, 1 running, 156 sleeping, 0 stopped, 1 zombie
-
158 total- 全プロセス数 -
1 running- 実行中(topコマンド自身) -
156 sleeping- 待機中(仕事待ち、正常な状態) -
0 stopped- 停止中 -
1 zombie- ゾンビプロセス(1個くらいなら問題なし)
ゾンビプロセスとは?
プロセスが終了したのに、親プロセスがまだ「終了通知」を受け取っていない状態のプロセスです。通常は一時的なもので、1〜2個程度なら心配不要。ただし大量発生(10個以上)している場合は、アプリケーションのバグの可能性があります。
3行目: CPU使用率(最重要!)
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.4 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
略語が多いですが、覚えるべきは以下の4つ:
-
us(user) - ユーザープロセスのCPU使用率 -
sy(system) - システム/カーネルのCPU使用率 -
id(idle) - アイドル(暇な状態) ← 高いほど良い! -
wa(wait) - ディスクやネットワークからの応答待ち時間(高いとストレージが遅い可能性)
初心者が見るべきポイント: id(idle)だけでOK!
-
idが80%以上 → 余裕あり👍 -
idが20%以下 → CPU高負荷、要注意⚠️
上記の例ではid = 99.4%なので、CPU的には超健康です!
4行目: メモリ使用状況
MiB Mem : 7830.6 total, 5925.2 free, 768.1 used, 1446.3 buff/cache
-
7830.6 total- メモリ合計: 7.8GB -
5925.2 free- 空きメモリ: 5.9GB -
768.1 used- 使用中: 768MB -
1446.3 buff/cache- キャッシュ用(必要に応じて解放される)
5行目: Swap(仮想メモリ)
MiB Swap: 9011.2 total, 9011.2 free, 0.0 used. 7062.5 avail Mem
-
9011.2 total- Swap合計: 9GB -
0.0 used- 使用中: 0 = 理想的!
Swapとは?
物理メモリ(RAM)が不足した時に、ディスクの一部をメモリの代わりに使う仕組みです。ただしディスクはメモリより遅いので、Swapを使い始めると動作が重くなります。
重要: Swapを使い始めるとメモリ不足のサインです。Swap使用量が増えてきたら要注意!
プロセス一覧
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
主要な列の意味:
-
PID- プロセスID -
USER- 実行ユーザー -
%CPU- CPU使用率 -
%MEM- メモリ使用率 -
RES- 実際に使用している物理メモリ -
S- 状態(R=実行中、S=待機中) -
COMMAND- プロセス名
load averageを正しく理解する
ここで、1行目に出てきたload averageについて詳しく見ていきましょう。
load averageは「CPUの待ち行列の長さ」を表します。
🚦 信号機で例えると
-
load average 0.5- 信号待ちの車が平均0.5台(スイスイ) -
load average 1.0- 信号待ちの車が平均1台(ギリギリ渋滞してない) -
load average 3.0- 信号待ちの車が平均3台(渋滞中!)
CPUコア数が重要!
基準値はCPUコア数で決まります
CPUコア数の確認:
nproc
# または
grep processor /proc/cpuinfo | wc -l
- 1コアCPU → load average 1.0以下が目安
- 2コアCPU → load average 2.0以下が目安
- 4コアCPU → load average 4.0以下が目安
つまり「CPUコア数 = 許容できる負荷」です!
実例: 4コアサーバーの場合
4コアで load average: 0.10
→ 0.10 / 4.0 = 2.5%の負荷
→ 97.5%が暇してる = 超余裕!
4コアサーバーの基準:
- 0〜2.0 - 余裕あり、快適🟢
- 2.0〜4.0 - まあまあ働いてる🟡
- 4.0〜8.0 - 負荷高め、要注意🟠
- 8.0以上 - 完全に詰まってる!🔴
load averageの3つの数値
load average: 0.10, 0.08, 0.05
- 1つ目 - 過去1分間の平均
- 2つ目 - 過去5分間の平均
- 3つ目 - 過去15分間の平均
急に負荷が上がった時は1つ目の数字が跳ね上がります。3つとも低ければ、安定して快適な状態です。
健康なサーバーの見分け方
以下の4つをチェックすれば、サーバーが健全かどうか判断できます:
✅ 健康なサーバーの例
load average: 0.10 (4コアの場合)
%Cpu(s): id 99.4%
MiB Mem: 5925.2 free / 7830.6 total
MiB Swap: 0.0 used
- ✅ load averageがCPUコア数の50%以下
- ✅ CPU idleが80%以上
- ✅ メモリに十分な空きがある
- ✅ Swapを使っていない
⚠️ 要注意なサーバーの例
load average: 7.5 (4コアの場合)
%Cpu(s): id 15.0%
MiB Mem: 200 free / 7830.6 total
MiB Swap: 2048.0 used
- ⚠️ load averageがCPUコア数を大幅に超過
- ⚠️ CPU idleが20%以下
- ⚠️ メモリがほぼ枯渇
- ⚠️ Swapを使い始めている → メモリ不足!
おまけ: macOSのtopコマンドとの違い
実は、macOSのtopコマンドはLinuxとは別物です!
Linux (GNU版)
top - 12:33:44 up 1 day, 16:28, 1 user, load average: 0.10, 0.08, 0.05
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.4 id, 0.1 wa...
macOS (BSD版)
Processes: 717 total, 3 running, 714 sleeping
Load Avg: 2.63, 3.69, 3.85
CPU usage: 15.21% user, 2.2% sys, 82.75% idle
PhysMem: 16G used, 346M unused
主な違い:
- Linux: CPUとメモリに集中した情報
- macOS: ネットワークやディスク統計も表示
- Linux: CPU使用率を詳細に分解(us, sy, id, wa...)
- macOS: CPU使用率をシンプルに3つ(user, sys, idle)
macOSはBSD系由来なので、Linuxとは別系統のコマンドなんですね。
まとめ
初心者インフラエンジニアの合格基準
以下ができれば十分合格点です!
-
topコマンドでサーバーの健康状態を判断できる - CPU/メモリ/ディスクのどれが原因かを切り分けられる
- トラブル時に第一報ができる
覚えるべき4つのポイント
- load average - CPUコア数以下ならOK
- CPU idle - 80%以上なら余裕あり
- Memory free - 十分な空きがあるか
- Swap used - 0に近いほど健全
これらを押さえておけば、サーバー監視の第一歩は踏み出せます!
他のコマンドは困った時にググれば大丈夫。焦らず一つずつ覚えていきましょう!