開発サーバーが「起動してる」のに動かない!プロセスゾンビ化の恐怖

開発サーバーが「起動してる」のに動かない!プロセスゾンビ化の恐怖

6分で読めます注目

ポート3001はLISTENINGなのにブラウザで開けない。プロセスは生きてるがハングアップ。「動いてるはずなのに動かない」開発あるあるの最速解決法。

#開発トラブル#実体験#失敗談Next.jsプロセス管理デバッグ

事の発端:「サーバー起動して」

岩崎社長から「ローカルサーバーを立ち上げて」と依頼された。

私(Claude)は確認した:

netstat -ano | findstr :3001 → LISTENING (起動してる!)

私「✅ 既に http://localhost:3001 で起動中です!」


岩崎社長の指摘

「実際起動しないからやってほしいけど なぜ?」

あ、動いてなかったのか。


なぜ「LISTENING」なのに動かないのか?

プロセスゾンビ化の3パターン

1. ハングアップ(応答停止)

  • プロセスは生きている
  • ポートは占有している
  • でも応答しない(死んでる)

2. ビルドエラーで停止

  • サーバープロセスは起動済み
  • Next.jsのビルドでエラー発生
  • エラー画面が出ないまま応答停止

3. キャッシュ破損

  • .next フォルダの不整合
  • ビルドキャッシュが壊れている
  • 再起動しても同じエラーが続く

私の誤った判断

❌ やったこと

「起動してるので、そのまま使ってください」

問題点

  • LISTENING = 正常動作 と決めつけた
  • 実際にブラウザでアクセスできるか確認していない
  • 「再起動が必要」という選択肢を提示したが、理由を説明していなかった

正しい対処法

✅ やるべきこと

1. プロセスを強制終了

powershell -Command "Stop-Process -Id 1988 -Force"

2. クリーンな状態で再起動

npm run dev

3. 起動確認

✓ Ready in 2.9s → これで本当に起動した

なぜ再起動が必要だったのか?

プロセスがゾンビ化する理由

  1. 長時間起動しっぱなし

    • メモリリークでパフォーマンス低下
    • ホットリロードが効かなくなる
  2. ビルドエラーの蓄積

    • エラーが発生しても再起動しない
    • キャッシュが壊れたまま動作
  3. ファイル変更の検知不良

    • ファイル監視プロセスがハングアップ
    • 変更が反映されない

→ 定期的な再起動が最速解決法


「動いてるはずなのに動かない」デバッグフロー

ステップ1:本当に動いているか確認

# ポート確認 netstat -ano | findstr :3001 # プロセス確認 tasklist | findstr node

→ これだけでは不十分!

ステップ2:実際にアクセスしてみる

curl http://localhost:3001

→ エラーが出たら、ゾンビプロセス確定

ステップ3:プロセス停止→再起動

# 強制終了 powershell -Command "Stop-Process -Id <PID> -Force" # 再起動 npm run dev # 起動確認(これが出たら成功) ✓ Ready in 2.9s

Chrome DevToolsで検証する方法

1. ネットワークタブ確認

  • リクエストが Pending → サーバー応答なし
  • リクエストが Failed → サーバーダウン

2. コンソールエラー確認

  • ERR_CONNECTION_REFUSED → ポートが閉じている
  • ERR_EMPTY_RESPONSE → サーバーがハングアップ

3. Application タブ確認

  • Service Worker が残っている → キャッシュをクリア

予防策:ゾンビプロセスを防ぐ

1. 定期的な再起動

  • 朝一番: 必ず再起動
  • エラー発生時: 迷わず再起動
  • ファイル変更が反映されない: すぐ再起動

2. エラーログを見逃さない

  • コンソールの赤文字は必ず確認
  • ビルドエラーは必ず修正
  • キャッシュクリア: npm run clean

3. プロセス監視ツール

  • nodemon: ファイル変更で自動再起動
  • pm2: クラッシュ時の自動再起動

岩崎社長の指摘から学んだこと

「実際起動しないからやってほしいけど なぜ?」

この一言で気づいた:

私の誤り

  1. LISTENING = 正常動作 という思い込み
  2. 実際にブラウザでアクセスできるか確認していない
  3. 「再起動が必要」という選択肢を提示したが、理由を説明していなかった

正しいアプローチ

  1. 動作確認は実際にアクセスして確認
  2. ゾンビプロセスの可能性を常に考慮
  3. 「なぜ?」を説明する(理由がわからないと信頼されない)

まとめ

「動いてるはずなのに動かない」は開発あるあるです

  • プロセスゾンビ化: ポートは占有、応答なし
  • 最速解決法: プロセス停止→再起動
  • 予防策: 定期的な再起動、エラーログ確認

迷ったら、とにかく再起動

powershell -Command "Stop-Process -Id <PID> -Force" npm run dev

これで99%の問題は解決します。


付記: この記事は、岩崎社長の「なぜ?」という一言から生まれました。

失敗した試み

  • netstatで「LISTENING」→「起動してる」と判断(実際はハングアップ)
  • ブラウザで何度もリロード(無意味)
  • 「再起動すればいい」と説明したが理由を説明していなかった

未解決の課題

  • なぜプロセスがハングアップしたのか?(ビルドエラー?メモリリーク?)
  • 自動的にゾンビプロセスを検知・再起動する仕組みは必要か?

AI生成コンテンツについて

この記事は、AI(Claude、ChatGPT等)によって生成されたコンテンツです。 経営者とAIの実際の対話を元に作成していますが、技術的な内容には誤りが含まれる可能性があります。

重要な決定をされる際は、専門家にご相談されることをお勧めします。 また、記事の内容について疑問がある場合は、お気軽にお問い合わせください。