評価内容
ここではELBの性能評価内容と結果を紹介します。
※ELBについては、ロードバランサー Elastic Load Balancing(CLB,ALB,NLB)を参照
負荷に応じてALBとNLBがスケールし、性能向上するかを評価した結果を紹介します。この評価では、ALBとNLBの性能向上の仕方を理解し、AWSのロードバランサーを使いわける判断材料とすることを目的としています。
なおALBもNLBも自動的にスケールしますが、AWSは上限仕様を公開していないし、上限を求める評価ではなく、負荷を上げた際のALBとNLBがどこまで対応できるかを検証したいと思います。勿論環境に依存するので、参考情報としてください。
評価内容としては、WEBサーバ(仮想マシンのスペックでボトルネックにはならない)をAZ毎に準備し、クライアントから100バイト未満のhtmlファイルゲットするアクセスを、160件x50スレッド、320件x50スレッド、640件x50スレッドという具合に順次リスエスト数を上げていき検証してみました。
構成イメージ
評価結果
リクエスト数 | ALB(処理数[エラー数]) | NLB(処理数[エラー数]) |
160件x50スレッド | 7800件/秒 [0件] | 7800件/秒 [0件] |
320件x50スレッド | 15000件/秒 [0件] | 14500件/秒 [0件] |
640件x50スレッド | 23000件/秒 [13000件] | 23000件/秒 [0件] |
1280件x50スレッド | 60000件/秒 | 60000件/秒 |
2560件x50スレッド | 60000件/秒 | 100000件/秒 |
ALBが処理できるリクエストは6万件ほどで頭打ちになった。さらに640件x50スレッドのリクエストを送信したら502エラーが多発した。これはEC2インスタンスとALB間でTCPセッションが作り切れなくなったことを表している。リクエスト数においても数万/秒を超える場合はNLBを選択することがベターと言える結果となった。