1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linuxサーバー監視の第一歩: topコマンドの話

Posted at

目次

  1. はじめに
  2. topコマンドとは
  3. topコマンドの出力を1行ずつ解説
  4. load averageを正しく理解する
  5. 健康なサーバーの見分け方
  6. おまけ: macOSのtopコマンドとの違い
  7. まとめ

はじめに

「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とは別系統のコマンドなんですね。

まとめ

初心者インフラエンジニアの合格基準

以下ができれば十分合格点です!

  1. topコマンドでサーバーの健康状態を判断できる
  2. CPU/メモリ/ディスクのどれが原因かを切り分けられる
  3. トラブル時に第一報ができる

覚えるべき4つのポイント

  1. load average - CPUコア数以下ならOK
  2. CPU idle - 80%以上なら余裕あり
  3. Memory free - 十分な空きがあるか
  4. Swap used - 0に近いほど健全

これらを押さえておけば、サーバー監視の第一歩は踏み出せます!

他のコマンドは困った時にググれば大丈夫。焦らず一つずつ覚えていきましょう!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?