😺
Cloud Runは返り値に不正なレスポンスヘッダーがあると502[メモ]
症状
- Cloud Runで公開しているページがたまに、502が発生し30秒ページが表示されない
- ローカルやエミュレータでは問題が起こらず、Cloud Runで実行してる場合に発生する
↑こういうきれいな絵があるものと、文字だけのパターンがある
解決に向けた作業
理由が分からなかったので、症状の再現パターンを探す -> 地道にコードを変更して理由となるコードを探した。
該当するのは、ヘッダーを生成している箇所で、ヘッダーに書き込んでいる content-length: xxx
と実際のbodyのサイズが違う、不正なレスポンスを返すときがあった。
レスポンスヘッダーが不正な場合に、Cloud Runが殺されているようだ。
レスポンスを修正すると問題が発生しなくなった。
推測する理由
ドキュメントを見つけられなかったが、health checkの一環でレスポンスヘッダーを監視しているのだろう。
不正なデータがあった場合は対象のコンテナは殺されて、ユーザには502を返していそう。
Docker単体で実行している時はサーバが落ちないのが、わかりにくいポイントですね。
(ちゃんとしたコードを書いている人には関係ない話ですが。。。)
おわり。
Discussion