Slide 1

Slide 1 text

#JAWSUG_SRE GraphQL における quota をみながら 負荷試験してみた 2022年9月30日 #04

Slide 2

Slide 2 text

#jawsug_sre 04 自己紹介 三浦一樹(36) #Sauna #Sapporo #HTB #Amplify #StepFunctions #Serverless #AWSSamurai2019 #Marvel #Hinatazaka46 #ANN #PdM #PjM #SM

Slide 3

Slide 3 text

#jawsug_sre 04 SREじゃないんですけど ツイートしたら捕まりましたw

Slide 4

Slide 4 text

数年に1度やってくる 瞬間的な高負荷 スパ イク #JAWSUG_SRE 04

Slide 5

Slide 5 text

#jawsug_sre 04

Slide 6

Slide 6 text

落城

Slide 7

Slide 7 text

#jawsug_sre 04 2021

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

#jawsug_sre 04 query mutation 商品データ 10Table ユーザデータ 10Table

Slide 10

Slide 10 text

#jawsug_sre 04 query mutation amplify-cli

Slide 11

Slide 11 text

#jawsug_sre 04 mutation ここがやばい 商品データ 10Table ユーザデータ 10Table

Slide 12

Slide 12 text

クォータ #JAWSUG_SRE 04 リクエスト/s 最適化

Slide 13

Slide 13 text

最初の1クエリで 全データを持ってくる 2022.04.28 〜 2022.03.01 〜

Slide 14

Slide 14 text

#jawsug_sre 04 2022

Slide 15

Slide 15 text

クォータ #JAWSUG_SRE 04 リクエスト/s

Slide 16

Slide 16 text

だと おもってたら

Slide 17

Slide 17 text

変わってた (本番 1週間前)

Slide 18

Slide 18 text

クォータ #JAWSUG_SRE 04 リクエスト トークン /s リクエスト/s ↓

Slide 19

Slide 19 text

とーくん??

Slide 20

Slide 20 text

#JAWSUG_SRE 04 課金制度が変わった時? クォータが変更されたアナウンスは 見つからず、、 くやしいので、 過去のキャッシュを漁って、履歴を確認する

Slide 21

Slide 21 text

#JAWSUG_SRE 04 通常は 1token ってことは、変わらなそうじゃん レスポンスヘッダーの x-amzn-appsync-TokenConsumed を確認してみましょう 冷静にドキュメントを読むんだ、、!

Slide 22

Slide 22 text

x-amzn-appsync-tokenconsumed:50

Slide 23

Slide 23 text

x-amzn- appsync- tokencon sumed: 50

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

😴

Slide 26

Slide 26 text

#JAWSUG_SRE 04 2000 リクエスト /s 1ユーザは初期2クエリする 2000 ➗ 2 = 1000 users / s 昔の想定

Slide 27

Slide 27 text

#JAWSUG_SRE 04 2000 リクエスト /s 1ユーザは初期2クエリする 2000 ➗ 2 = 1000 users / s 2000 リクエスト トークン/s 1ユーザは 約 60トークン消費 2000 ➗ 60 ≒ 33 users/ s 昔の想定 実際

Slide 28

Slide 28 text

#JAWSUG_SRE 04 2000 リクエスト /s 1ユーザは初期2クエリする 2000 ➗ 2 = 1000 users / s 2000 リクエスト トークン/s 1ユーザは 約 60トークン消費 2000 ➗ 60 ≒ 33 users/ s 昔の想定 実際 想定の 30分の1 しか耐えられない!

Slide 29

Slide 29 text

怒りのデス・ロード

Slide 30

Slide 30 text

割愛

Slide 31

Slide 31 text

高負荷かけると 消費量が変化する 結論 #JAWSUG_SRE 04

Slide 32

Slide 32 text

#jawsug_sre 04 JMeter から AppSync にクエリなげる CloudWatch logs Insight で頑張って集計する (金額はまぁすごいことに) いろんな負荷のかけ方をしてみた

Slide 33

Slide 33 text

#jawsug_sre 04 JMeter から AppSync にクエリなげる 100 rps 付近から トークン消費が 「1」に漸近する CloudWatch logs Insight で頑張って集計する (金額はまぁすごいことに) いろんな負荷のかけ方を試してみ たところ token consumed/queryのログのcount (それぞれ1秒間のSUM)

Slide 34

Slide 34 text

スパイク前に JMeterで 高負荷かけたれ

Slide 35

Slide 35 text

スパイクが予想される 前に高負荷かけて クエリあたりのトークン 消費量を 大幅に減少させ クォータの制限ないに 収めることができた!! まとめ #JAWSUG_SRE 04

Slide 36

Slide 36 text

基本はオンライン 東京以外はオフライン会場も