Lambdaの機能である「プロビジョニング済み同時実行(Provisioned Concurrency)」について、「HEY」という負荷テストツールを使用して、有効化した場合とそうでない場合の差分を検証してみた
~Provisioned Concurrency~2023-09-26緊 急 開 催 ! サ ー バ ー レ ス座 談 会 in JAWS - UG 大阪株式会社ディーネット 寺井 俊喜(テライ トシキ)1Lambdaの「プロビジョニング済み同時実行」を試す
View Slide
自己紹介2• 名前- 寺井 俊喜(テライ トシキ)• 所属- 株式会社ディーネット(2022/12~)- クラウドビジネス部 アーキテクト課• 好きなこと- 音楽、猫、お酒、ゲーム、効率化• 好きなAWSサービス- Amazon EventBridge• SNS/ブログ- Twitter(@TeraiToshiki)- DENET技術ブログ(t.terai) follow me !!
目次3
目次41.プロビジョニング済み同時実行とは2.検証環境と使用したツールの紹介3.やってみた4.まとめ
プロビジョニング済み同時実行(Provisioned Concurrency)とは5
二種類の「同時実行」参考:https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html 6• 予約済み同時実行関数が専有する同時インスタンスの最大数• プロビジョニング済み同時実行関数に割り当てる 事前に初期化された実行環境 の数※他の関数はリージョン内のすべての関数にわたる1,000の同時実行制限のうち「同時実行」により確保された数分を使用できなくなる0 100 200 300 400 500 600 700 800 900 1000同時実行制限(クオータ)非予約 予約済同時実行 プロビジョニングされた同時実行スロットリング
プロビジョニング済み同時実行7
プロビジョニング済み同時実行とは – イメージ8通常の状態(コールドスタート)プロビジョニング済み(ホットスタンバイ)検証
検証環境と使用したツール9
検証環境10AWS Lambda(関数URL)Amazon EC2(負荷ツール)並列同時リクエスト
負荷ツール - 「HEY」11• 指定した回数,並列処理数でリクエストを送信できる• 「Go」が動く環境であれば実行可能• 操作が簡単• コマンド:hey -n {回数} -c {並列数} {リクエスト先URL}引用:https://github.com/rakyll/hey
やってみた12
プロビジョニング済み同時実行 - 無いとき(1回目)13• おおよそ平均に近しいレスポンスタイム• コールドスタートの処理が50件ほど(全体の約5%)13平均:0.0366
プロビジョニング済み同時実行 - 無いとき(2回目)14• 平均タイムが約半分に→ウォームスタートの影響• コールドスタートの処理はほぼ無さそう14平均:0.0172
プロビジョニング済み同時実行 - 無いとき(3回目)15• 平均タイムは先ほどとほぼ変わらず• 若干タイムが遅い処理がちらほら…??15平均:0.0179
プロビジョニング済み同時実行を設定16
コンソール 設定画面17
コンソール 設定画面18
プロビジョニング済み同時実行 - 有るとき(1回目)19• 初回起動時にもかかわらず短いレスポンスタイム• やっぱりちょい遅な処理が50件ほど(全体の約5%)19平均:0.0208
プロビジョニング済み同時実行 - 無いとき(1回目)2020平均:0.0366(比較用)
プロビジョニング済み同時実行 - 有るとき(2回目)21• 更にタイムが縮まる→「無いとき」の2回目と同等• ちょい遅な約50件は発生(さっきよりは早い)21平均:0.0176
プロビジョニング済み同時実行 - 有るとき(3回目)22• 本検証最速タイム• やっぱりちょい遅は発生(さっきよりちょっと改善)22平均:0.0166
まとめ23
まとめ24• 処理速度の向上が見込める• ウォームスタートの恩恵• スパイクに対応しやすくなる• 料金には注意• 1 GB-秒あたり 0.0000053835USD(x86 料金)参考:メモリ128MBの関数で 10 のプロビジョニング済み同時実行→月額 $18.03• 「551HORAI」は肉まんより「甘酢団子」のが好き
株式会社ディーネット 寺井 俊喜(テライ トシキ)AWSアドバンストコンサルティングパートナー25ご清聴ありがとうございました。