Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lambdaのこと
Search
Sho
March 20, 2024
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lambdaのこと
Sho
March 20, 2024
More Decks by Sho
See All by Sho
Java ランタイムからカスタムランタイムに行き着くまで
ririru0325
1
530
チームでリファクタリングを進めるために
ririru0325
0
130
AWS歴6年のSaaS企業が直面する低凝集マイクロサービスの課題とその解決アプローチ
ririru0325
0
38
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
75
できたこと・やっていきたいこと
ririru0325
0
62
jq を駆使して aws cli の運用を最適化
ririru0325
1
190
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
430
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
77
Featured
See All Featured
The SEO Collaboration Effect
kristinabergwall1
1
500
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Agile that works and the tools we love
rasmusluckow
331
22k
A better future with KSS
kneath
240
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Everyday Curiosity
cassininazir
0
250
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Visualization
eitanlees
152
17k
Designing for Performance
lara
611
70k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Transcript
Lambdaのコールドスタートのこと
目次 ・自己紹介 ・課題 ・色々調べてみた ・色々やってみた ・まとめ
自己紹介 • 名前: 桑名 翔(クワナ ショウ) • 年齢: 27歳 • 会社: エムオーテックス株式会社
• 趣味: スノーボード、ゲーム
課題 • Lambdaのコールドスタートを何とかしたい ◦ 自分が参画しているプロジェクトではAWS Lambdaがよく使われている ◦ 言語はScalaなので、Java ランタイムで動かしている ◦
Java ランタイムのLambdaは初回起動にとても時間がかかる
色々調べてみた • Javaのこと ◦ JITコンパイラについて ◦ 階層型コンパイルについて ◦ C1とC2とインタプリタについて •
Lambdaのこと ◦ 環境変数にオプションを入れられること ◦ SnapStartのこと ◦ ProvisionedConcurrencyのこと
色々やってみた • DynamoDbからgetItemしてprintするだけのコードをJarにしてデプロイ 1. とりあえずデフォルト実行で動作の時間チェック 2. 階層型コンパイル有効化 ◦ 環境変数に以下をセット ”JAVA_TOOL_OPTIONS”:
”-XX:+TieredCompilation -XX:TieredStopAtLevel=1” 3. ProvisionedConcurrencyを有効化 ◦ Lambdaの設定にある (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/provisioned-concurrency.html) 4. SnapStartを有効化 ◦ Lambdaの設定にある (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/snapstart.html)
色々やってみた結果 1. とりあえずデフォルト実行で動作の時間チェック 2. 階層型コンパイルを有効化 3. ProvisionedConcurrencyを有効化 4. SnapStartを有効化 ◦
4a: ダミー実行なし ◦ 4b: ダミー実行あり init duration sum 1. 3955 193 4148 2. 2260 142 2402 3. --- 590 590 4a. 784 15649 16433 4b. 1099 1880 2979 2 + 4b 877 987 1864
最後に 去年でたSnapStartやオプションをうまく活用すれば、簡単な処理であればJavaランタイム のLambdaでも、初回スタートを割と早くできた。 GraalVMのネイティブイメージを使ったカスタムランタイムでの実装は、中々制約が多く、 設定が難しいので、まだ実用レベルまで持っていけてないので、今後調査研究して使え るところでは使っていきたい。