Top View


Author shiro seike / せいけ しろう / 清家 史郎

AWS Lambda With RDS Proxy Performance

2019/12/11

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で有効に使える機能だと考えました。

shiro seike / せいけ しろう / 清家 史郎

shiro seike / せいけ しろう / 清家 史郎

Twitter X

Company:Fusic CO., LTD. Slides:slide.seike460.com blog:blog.seike460.com Program Language:PHP , Go Interest:Full Serverless Architecture