Table of Contents
Proxyなし
Requests per second: 81.51 [#/sec] (mean)
Requests per second: 120.02 [#/sec] (mean)
Requests per second: 120.76 [#/sec] (mean)
大体120 [#/sec]ですね。
RDS Proxy版
RDS Proxy設定していきます。
Serverless FrameworkのDocsとGithub見たけどまだそれらしい設定はわかりませんでした。 全てがココに書いてあるので、ポチポチボタンを押していきます
最終的に、RDS Proxyのエンドポイントが作成されるので、 Lambda Laravelの繋ぎ先をRDS Proxyに変更します。
Requests per second: 31.88 [#/sec] (mean)
Requests per second: 33.27 [#/sec] (mean)
Requests per second: 33.30 [#/sec] (mean)
大体33 [#/sec]ですね。。。
実際にApache Benntiを書けてみるとわかるのですが、
Finished 1000 requests前で動作がとまり、
かなり時間が立った後に結果がかえります。
多数のLambdaがConnectionの解放待ちを行なっている状態だと考えます。
ココでRDSの接続数を見てみます。
ある期間から接続数が急激に上昇し、その接続数が保たれています。
Connection Poolingが行われている様子だと思います。
リクエストの分布を見てみると、何度測定しても次の様な結果が得られます。
Percentage of the requests served within a certain time (ms)
50% 754
66% 799
75% 829
80% 844
90% 903
95% 986
98% 1040
99% 1065
100% 28172 (longest request)
最後のリクエストの完了に以上に時間がかかっています。
やはりリクエストを受け取る事ができるけど、
Connectionが回ってくるのに時間がかかっているようです。
Connection Poolingする数を増加させようとしましたが、現状設定箇所がわかりませんでした。
まとめ
爆発的なリクエストの増加には、少し厳しいレスポンスになることがわかりました。
ある意味当たり前かつこれが狙った効果ではあるので、
Connectionを溢れさせない為には有用だと思います。
使うポイントを間違えなければ、Lambdaで有効に使える機能だと考えました。