web-dev-qa-db-ja.com

Google App Engineで502を見る

Google App Engineで502の「Bad Gateway」エラーがかなり発生しています。下のグラフではわかりにくいですが(色が非常に似ていて、変更方法がわかりません)、これは過去6時間のトラフィックです。

Traffic over the past 6 hours

濃いピンクの線は5xxエラーを表します。彼らは今朝9時30分頃に始まり、太平洋標準時午後12時30分頃に落ち着きました。しかし、その3時間の間、nginxは502 Bad Gatewayを一貫して返していました。そして、それはちょうど止まった。

その間、 私がコードに対して行った唯一のコミット 動作を変更しようとするために、各インスタンスをメモリの0.5から1Gに増やし、キャッシュを増やしましたTTL一部の404応答についても 生存チェックを追加 なので、アプリサーバーがダウンしたときにnginxがそれを認識します。

私はnginxのエラーログをチェックし、これらの束を見ました:

failed (111: Connection refused) while connecting to upstream

トリプルチェックを行い、すべてのアプリサーバーがポート8080で実行されているため、除外しました。多分、活性チェックが必要なサーバーを再起動するタイミングをアプリエンジンが知るのに役立ったと思いますが、アプリサーバーのstdoutログには、それらのいずれかが不良であることを示すものは何も表示されません。

これは、ある種のApp Engineエラーである可能性がありますか?

EDIT @ 9:17p PST:以下は、アプリへの最小限のコード変更を含む、過去24時間のApp Engineトラフィックの画像です。 5xxスパイクを強調表示して、よりはっきりと見えるようにしました。

Traffic over the past 24 hours

2
mjackson

残念ながら、次のような502エラーが急増する理由は無数にあります。

  • バックエンドインスタンスの応答にバックエンドサービスのタイムアウトよりも時間がかかりました。つまり、アプリケーションが過負荷になっているか、バックエンドサービスのタイムアウトの設定が低すぎます。
  • フロントエンドは、バックエンドインスタンスへの接続を確立できませんでした。
  • フロントエンドは、接続する実行可能なバックエンドインスタンスを特定できませんでした。 (ヘルスチェックはすべてのバックエンドで失敗します)

詳細情報を取得するには、Cloud Consoleからの502エラーについて Stackdriver Loggingを調べる が必要です。

次にスパイクが発生したときに確認できるのは、ヘルスエラーが誤検知を引き起こしたために502エラーが発生したかどうかです。別の ServerFault post があり、同じ問題があり、もう少し知ることができます。この場合は、インスタンスのディスク容量を増やすことを検討してください。

今後のスパイクを回避するために、app.yamlファイルに準備チェックと活性チェックを追加して、インスタンスが完全に取り込む準備ができる前にインスタンスがトラフィックを受け取らないようにすることをお勧めします。 ドキュメントはこちら 準備チェックを追加するため

チェックする最後の1つのことは、すべてのトラフィックと比較した、スパイクのあるトラフィックの割合が [〜#〜] sla [〜#〜] に該当するかどうかです。

1
Kevin C