Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
今回はLinuxサーバーやPCの管理・運用に欠かせない、システムリソース監視について解説します。
「サーバーの反応が遅い」「アプリケーションの動作が重い」といった問題に直面したとき、その原因を特定するために最も重要なのが、CPU、メモリ、プロセスなどのリソース状況を把握することです。
この記事では、Linux環境で標準的に利用できる3つの強力なツールtop、htop、vmstatの使い方を、具体的なケーススタディを交えながらご紹介します。これらのコマンドを使いこなせば、システムの健全性を維持し、トラブルを未然に防ぐことができるようになります。
topコマンドでシステムのリアルタイムな状態を把握する方法htopコマンドの便利な機能とtopとの違いvmstatコマンドでCPU、メモリ、ディスク、I/Oの統計情報を確認する方法topは、実行中のプロセスやシステム全体の状況をリアルタイムで表示する最も基本的なコマンドです。起動すると、画面が更新され続け、CPU使用率やメモリ使用量が高いプロセスをすぐに特定できます。
ただtopと入力して実行するだけです。
top
実行すると、以下のような情報が表示されます。
top: 現在の時刻、起動からの経過時間、ログインユーザー数、ロードアベレージTasks: プロセスの総数、実行中、スリープ中、停止中、ゾンビプロセスの数%Cpu(s): CPUの使用率。us(ユーザー)、sy(システム)、ni(nice値)、id(アイドル)、wa(I/O待ち)などの内訳が表示されます。MiB Mem: 物理メモリの合計、空き、使用中、バッファ/キャッシュの量MiB Swap: スワップメモリの合計、空き、使用中の量PID: プロセスIDUSER: 実行ユーザー%CPU: CPU使用率%MEM: メモリ使用率COMMAND: コマンド名| やりたいこと | コマンド(実行中に押すキー) | 説明 |
|---|---|---|
| CPU使用率の高いプロセスを探したい | P(Shift + p) | プロセスリストをCPU使用率の高い順に並べ替えます。これがトラブルシューティングの第一歩です。 |
| メモリ使用率の高いプロセスを探したい | M(Shift + m) | プロセスリストをメモリ使用率の高い順に並べ替えます。 |
| 表示を終了したい | q | topを終了し、ターミナルに戻ります。 |
| 特定のユーザーのプロセスだけを見たい | u | ユーザー名を入力すると、そのユーザーのプロセスのみに絞り込めます。 |
topの出力にあるロードアベレージ(Load Average)は、システムにどれだけの負荷がかかっているかを示す重要な指標です。これは「実行可能状態(実行中またはCPU待ちの状態)」と「割り込み不能なスリープ状態(ディスクI/O待ちなど)」にあるプロセスの平均数を、過去1分、5分、15分でそれぞれ表します。
load average: 0.10, 0.20, 0.30のような場合、時間が経つにつれて負荷が減っていることを示します。htopはtopの代替として人気のあるツールです。topよりも視覚的で、色分けされた表示、マウス操作、そしてより直感的なプロセス管理機能を提供します。標準ではインストールされていない環境が多いため、まずはインストールが必要です。
# Debian/Ubuntu系
sudo apt-get install htop
# Red Hat/CentOS系
sudo yum install htop
# または
sudo dnf install htop
【注意】 インストールには管理者権限が必要です。もし権限がない場合は、システム管理者に依頼してください。
htopはtopの強力な上位互換とも言えるツールです。
F5キーを押すと、プロセスを親子関係でツリー状に表示できます。これにより、どのプロセスが原因で子プロセスが多数起動しているか、といったプロセスの暴走トラブルを素早く特定するのに非常に役立ちます。vmstatは、CPU、メモリ、プロセス、ディスクI/Oに関する統計情報を一定時間ごとに表示するコマンドです。topやhtopがリアルタイムなプロセス単位の情報を重視する一方で、vmstatはよりシステム全体のマクロな視点で、時間の経過に伴うリソースの変化を追うのに適しています。
vmstatの基本的な使い方は、vmstat [間隔] [回数]です。例えば、2秒おきに3回情報を表示したい場合は、以下のようになります。
vmstat 2 3
vmstatの出力は少し専門的ですが、重要なポイントは以下の通りです。
procs:r (running): 実行待ちのプロセス数。この値が高いと、CPUがボトルネックになっている可能性があります。b (blocked): I/O待ちなどでブロックされているプロセス数。高い場合はディスクI/Oがボトルネックになっている可能性があります。cpu:us (user): ユーザープロセスが消費しているCPU時間。sy (system): カーネルが消費しているCPU時間。id (idle): CPUがアイドル状態の時間。wa (wait): I/O待ちでCPUがアイドル状態だった時間。この値が高い場合は、ディスクI/Oが原因でシステムが遅くなっている可能性が高いです。memory:swpd (swapped): スワップアウトされているメモリの量。頻繁にスワップが発生している場合は、物理メモリが不足している可能性があります。どのコマンドをいつ使うべきか、具体的なトラブルシーンを想定して整理しました。
| シーン | 疑わしい原因 | 最初に試すべきコマンド |
|---|---|---|
| システムが重い | CPU、メモリ、I/Oのいずれかがボトルネック | top |
| 特定のプロセスがCPUを食い潰している | プロセスの暴走 | topでPキーを押し、CPU使用率順で確認 |
| メモリが不足している | 大規模なアプリケーションが実行中 | topでMキーを押し、メモリ使用率順で確認。swpdの値もチェック |
| ロードアベレージは高いがCPU使用率は低い | ディスクI/Oがボトルネック | vmstatを実行し、wa(I/O待ち)の値を確認 |
freeコマンドを使えば、メモリの空き状況をシンプルに確認できます。iostatやsarといったコマンドも、より詳細なI/Oやリソースの統計情報を取得できるため、ぜひ一度試してみることをおすすめします。
top: サーバーが突然重くなったとき、まず最初に実行するべきコマンドです。どのプロセスが原因かを素早く特定するのに役立ちます。htop: topよりも高機能で使いやすいツールです。マウス操作やツリー表示など、直感的にシステムの状態を把握できます。vmstat: 特定のプロセスではなく、システム全体のマクロな傾向(CPU待ち、I/O待ち)を知りたいときに使います。定期的なレポート取得や、ボトルネックの切り分けに非常に有効です。これらのコマンドを使いこなすことで、システムのトラブルを迅速に解決し、より安定した運用を目指すことができます。
この記事が、リソース監視に関する理解を深める一助となれば幸いです。ご覧いただきありがとうございました。次回は、ファイルシステムの種類と特徴について解説します。