error
【完全版】502 Bad Gatewayエラーが発生するインフラ側の原因と復旧手順
Webサイトにアクセスした際、画面に「502 Bad Gateway」や「nginx/1.18.0」といった文字だけが表示される絶望的なエラーです。
【502エラーの真の発生源】
このエラーは、ユーザーのブラウザやアプリに問題があるわけではありません。また、Webサーバー(NginxやApache)自体は生きています。根本的な原因は、Webサーバーの「裏側」で動いているアプリケーションサーバー(PHP-FPM、Node.js、Pythonなど)やデータベースがダウンしており、Webサーバーが「裏のシステムからまともな返事が返ってこない」と判断した時に発生します。
【サーバー管理者向けの具体的な調査と復旧手順】
1. アプリケーションプロセスの生存確認
まずは裏側のプログラムが動いているか確認します。LinuxサーバーにSSH接続し、`systemctl status php-fpm` や `pm2 status` などのコマンドを実行し、プロセスが「active (running)」になっているか確認してください。もし「failed」になっていれば、プロセスを再起動(restart)することで即座に復旧します。
2. メモリ不足(OOM Killer)の確認
プロセスが勝手に落ちる最大の原因はメモリ不足です。Linuxのカーネルはシステム全体のクラッシュを防ぐため、メモリを食いすぎているプロセスを強制終了させます。`/var/log/messages` や `dmesg` コマンドでログを確認し、「Out of memory: Killed process」という記録があれば、サーバースペック(RAM)の増強か、プログラムのメモリリークの修正が必要です。
3. タイムアウト設定の見直し
プログラム自体は動いていても、処理に時間がかかりすぎている場合があります。例えば、データベース処理に60秒かかっているのに、Nginx側のタイムアウト設定が30秒になっていると、待つのを諦めて502エラーを返します。設定ファイルの `proxy_read_timeout` などの値を増やすか、バックエンドの処理速度を改善する必要があります。