502 Bad Gatewayのエラーの意味
いきなり502 Bad Gatewayと表示されて意味がわからなく面食らう方もいるかと思います。この502 Bad Gatewayを含めhttpの50x系のエラーとしてはサービス提供側のエラーとなります。
つまりアクセスしているPCやスマホのクライアント側の問題ではなく、サービス側の問題という意味となります。
502 Bad Gatewayの原因と回避するために
502 Bad Gatewayは先述の通りサービス提供側の問題となりますので、サービス提供側で原因を特定して何とかする必要があります。
逆に言うと、PCやスマホでアクセスしているユーザーはどうしようもありませんので、基本的にはサービス復旧を待つしかありません。
以下では、サービス提供側の方に対して、自らの経験に基づき502 Bad Gatewayのエラーの原因となり得る原因とその回避についてまとめます。参考になれば幸いです。
サーバーの設定を見直す
nginxやApacheのWEBサーバーの設定を見直してみましょう。もしも直近でサーバーの設定を変更した事があれば、その変更を疑って一度戻してみるのも手です。
サーバーの再起動で直る問題の可能性もありますので、一度nginxやApacheを再起動してみるのもありです。
WEBサーバーとアプリケーションサーバーが別の場合の設定を見直す
nginxやApacheなどのWEBサーバーとRailsやPHPなどのプログラム側のアプリケーションサーバーが別となっているシステムもあります。
この場合にunixソケットなどで連携している設定がおかしい場合があります。一度設定を見直すのと、nginxとアプリケーションサーバー側のログを見直し何かエラーを吐いていないかチェックしてみましょう。
アプリケーション側のバグを治す
アプリケーション側のプログラムにバグがある可能性があります。最近変更していた場合は一度もとに戻してみるのも有効です。
例えばかなり時間のかかるクエリが発生するような問題、リダイレクトループなどなどアプリケーション側で500系のエラーが発生して502 Bad Gatewayが発生している可能性もあります。一度プログラムを見直してみましょう。
プロセスやワーカーを増やす
アプリケーションサーバー側でアクセスをさばききれていなくて、timeoutして502 Bad Gatewayが発生している場合もあります。
この場合メモリの状況や、サーバーのCPUを考慮してプロセスやワーカーの数を増やして有効そうであれば、増やしてみましょう。
サーバーの増強
アクセス過多や、サーバーからのレスポンスが遅くて502 Bad Gatewayとなっている可能性もあります。サーバーの増強やスペックアップすることで改善する場合もあります。
AWSなどのクラウドでサーバーを管理している場合は簡単にスペックをあげられますので、一度あげてみるのも有効です。