目次
背景
Nuxt から API を叩いた際に、504エラーが発生しました。
環境
- Nuxt(localhost:3000)
- Spring Boot(localhost:8080)
- Windows(PowerShell)
症状
- フロントで 504 Gateway Timeout
- Nuxt コンソールに以下のエラー
ECONNREFUSED原因
ポート8080が別プロセスに使用されており、Spring Bootが起動できていなかった
確認方法
curl http://localhost:8080⇒ 接続できなければ、APIは起動していない可能性が高い
解決手順
① ポート使用状況を確認
netstat -ano | findstr :8080⇒ 結果例
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 12345この場合、一番右の 12345 が PID
② プロセスを特定
tasklist | findstr <PID>⇒ 結果例
java.exe 12345 Console 1 333,333 K③ プロセス停止
taskkill /PID <PID> /F④ Spring Boot 再起動
まとめ
- 504エラーでも「遅い」とは限らない
- ポート競合でAPIが起動していないケースがある
もう一歩踏み込むと
今回のようなケースでは、
- 接続エラーの種類
- 切り分けの順序
- どこから疑うべきか
で、調査時間が大きく変わります。
同じようなエラーでも原因は全く違うことが多いです。
さらに詳しく知りたい方へ
より詳しい判断軸や、再現性のある切り分け方法は
noteでまとめています。
- なぜこの順序で切り分けるのか
- 「タイムアウト」と「接続失敗」の見分け方
- 毎回迷わなくなる判断アルゴリズム
↓ 同じところで毎回迷いたくない人向けにまとめました。