Step 03: プロセス管理とシステム監視
深夜2時、本番サーバーのCPU使用率が100%に張り付き、レスポンスが返ってこない——こんな緊急事態で、冷静に「何が起きているか」を見極められるかどうかが、エンジニアの真価です。topでリソースを食いつぶすプロセスを特定し、systemctlでサービスを再起動し、dfでディスク容量の枯渇を検知する。これらのコマンドは、システムの「健康診断」であり、障害時の「救急キット」です。このStepでは、サーバーの生死を握るプロセス管理と監視の技術を、実践的に習得します。
マスターすべき3つの監視領域
1. プロセスの把握
サーバー上で動作しているすべてのプロセスを一覧し(ps)、リアルタイムでCPU・メモリ使用率を監視(top、htop)、特定のプロセスを名前で検索(pgrep)——これらなしで、障害の原因は特定できません。
2. サービスの制御
NginxやMySQLなどのサービスを起動・停止・再起動(systemctl)し、応答しないプロセスに終了シグナルを送信(kill)、または名前でまとめて停止(pkill)——正しい手順を踏まないと、データ破損や予期しない障害を引き起こします。
3. リソースとログの監視
ディスク使用率(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を使用してください。
教訓:システム監視は「数値を見る」ことではなく、「異常を見抜く」ことです。正常値の感覚を養うため、普段から定期的にtopやdfを実行し、サーバーの「平時の顔」を記憶してください。異常は、平時との差分で見えてきます。
