Step03: プロセス管理とシステム監視

Step 03: プロセス管理とシステム監視

深夜2時、本番サーバーのCPU使用率が100%に張り付き、レスポンスが返ってこない——こんな緊急事態で、冷静に「何が起きているか」を見極められるかどうかが、エンジニアの真価です。topでリソースを食いつぶすプロセスを特定し、systemctlでサービスを再起動し、dfでディスク容量の枯渇を検知する。これらのコマンドは、システムの「健康診断」であり、障害時の「救急キット」です。このStepでは、サーバーの生死を握るプロセス管理と監視の技術を、実践的に習得します。

マスターすべき3つの監視領域

1. プロセスの把握

ps top htop pgrep

サーバー上で動作しているすべてのプロセスを一覧し(ps)、リアルタイムでCPU・メモリ使用率を監視(tophtop)、特定のプロセスを名前で検索(pgrep)——これらなしで、障害の原因は特定できません。

2. サービスの制御

systemctl kill pkill

NginxやMySQLなどのサービスを起動・停止・再起動(systemctl)し、応答しないプロセスに終了シグナルを送信(kill)、または名前でまとめて停止(pkill)——正しい手順を踏まないと、データ破損や予期しない障害を引き起こします。

3. リソースとログの監視

df free dmesg uptime

ディスク使用率(df)、メモリの空き容量(free)、カーネルのメッセージ(dmesg)、システムの稼働時間と負荷(uptime)——これらの数値が、サーバーからの「SOS」です。異常値を見逃すと、サービス停止に直結します。

このStepで習得すべき記事

各コマンドを実際のサーバーで試し、異常値を見抜く感覚を養ってください。

現場の知恵:負荷上昇時の優先順位と kill -9 の注意点

サーバーの負荷が急上昇した時、パニックにならず、以下の順序で確認してください:uptimeでロードアベレージを確認(1分平均が異常に高いか)、topでCPU使用率トップのプロセスを特定df -hでディスク容量を確認(ログやキャッシュで埋まっていないか)、free -hでメモリ使用状況を確認(スワップが発生していないか)。この4ステップで、原因の90%は絞り込めます。

プロセスを強制終了する際、kill -9 [PID](SIGKILL)は最終手段です。かつて、データベースプロセスにkill -9を送信し、トランザクションが途中で切れてデータが破損した苦い経験があります。まずはkill [PID](デフォルトはSIGTERM)で正常終了を試み、それでも応答しない場合のみkill -9を使用してください。

教訓:システム監視は「数値を見る」ことではなく、「異常を見抜く」ことです。正常値の感覚を養うため、普段から定期的にtopdfを実行し、サーバーの「平時の顔」を記憶してください。異常は、平時との差分で見えてきます。