事象
ELBでは遅くなかったのに、ALBを利用すると初回の接続が遅くなるケースに相対しました。
データ量が重いという感じではなく、接続までに時間がかかっている、という感触です。
その後は、一定期間は遅さを感じなくなり、また一定時間後に遅くなる、という挙動でした。
原因と解決策
VPCのルーティングテーブルの関連付けに問題がありました。
ALBは最低二つのpublicなsubnetを指定する必要がありますが、両方ともigwを設定している必要があるようです。
私の場合は、以下のルーティングになっていました。
- ap-northeast-1a:public
- デフォルトゲートウェイ: インターネットゲートウェイ
- ap-northeast-1c:public
- デフォルトゲートウェイ: なんとNATゲートウェイを指定
- ここを1aと同じインターネットゲートウェイを指定することで解消した。
- おそらく、新しくigwを作っても解消する。
- デフォルトゲートウェイ: なんとNATゲートウェイを指定
もともとMulti AZ構成を取っていればこのようなことにはならなかったのでしょうが、Single AZ構成で運用していたため変なルーティングテーブルになっていたのに気づいていませんでした。
参考
- https://qiita.com/TakenoriHirao/items/a3ace404d785e6a4db22
- https://stackoverflow.com/questions/35523421/aws-elastic-load-balancing-seeing-extremely-long-initial-connection-time
- https://stackoverflow.com/questions/48287348/aws-application-load-balancing-seeing-extremely-long-initial-connection-time/48287350#48287350