😺

Cloud Runは返り値に不正なレスポンスヘッダーがあると502[メモ]

2022/03/31に公開

症状

  • Cloud Runで公開しているページがたまに、502が発生し30秒ページが表示されない
  • ローカルやエミュレータでは問題が起こらず、Cloud Runで実行してる場合に発生する

google-502-error.png

↑こういうきれいな絵があるものと、文字だけのパターンがある

解決に向けた作業

理由が分からなかったので、症状の再現パターンを探す -> 地道にコードを変更して理由となるコードを探した。
該当するのは、ヘッダーを生成している箇所で、ヘッダーに書き込んでいる content-length: xxx と実際のbodyのサイズが違う、不正なレスポンスを返すときがあった。
レスポンスヘッダーが不正な場合に、Cloud Runが殺されているようだ。
レスポンスを修正すると問題が発生しなくなった。

推測する理由

ドキュメントを見つけられなかったが、health checkの一環でレスポンスヘッダーを監視しているのだろう。
不正なデータがあった場合は対象のコンテナは殺されて、ユーザには502を返していそう。

Docker単体で実行している時はサーバが落ちないのが、わかりにくいポイントですね。
(ちゃんとしたコードを書いている人には関係ない話ですが。。。)

おわり。

Discussion