ECS + Nginx,GunicornでTCPソケットエラー
- Jmeterで負荷をかけると503 Bad Gatewayが多発した
- どうやらECSには以下の制約があるそう。
net.core.somaxconn=128
現時点では Fargate では変更できないので、タスクを多く起動して頂くことで解決して下さい。
【週刊 Ask An Expert #04】AWS Loft Tokyo で受けた質問まとめ #AWSLoft
- 他にもDBのチューニングも考慮した方が良い
ディスクI/O
RDSのパフォーマンスインサイトでIndexの分析
パフォーマンスインサイトではIndexの使用率やクエリの結果が確認可能
対応方法の検討
1 ECSを予め増やしておく
一番ナンセンスだが、即時で対応が可能。
ELB + ECSの環境であれば、最小コンテナ数と最大コンテナ数の設定を変えるだけで済む。必要に応じて、ELBのPre-Warmingをすること!
2 ELBでのコネクション数を閾値にコンテナを動的に増やす
ELBのActiveConnectionCountを閾値にして、コンテナ数を増やす。
ECSのポリシーの追加-アラームを追加で設定できる
3 スケジューリングでECSをオートスケールする
利用開始時間の前にECSをスケールアウトさせておく。
アプリケーションオートスケーリング-lambda-コンテナの数
余談
EC2の監視間隔はデフォルトで5分間隔だが、ECSはデフォルト1分間隔で監視できる。