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
RDS_AuroraパフォーマンスインサイトのデータをAthenaとQuickSightで見る
Search
hmatsu47
PRO
May 31, 2021
Technology
2
470
RDS_AuroraパフォーマンスインサイトのデータをAthenaとQuickSightで見る
JAWS-UG 名古屋 データ分析を学ぶ 2021/05/31
hmatsu47
PRO
May 31, 2021
Tweet
Share
More Decks by hmatsu47
See All by hmatsu47
大人の社会科見学 ~ NTT 技術史料館に行ってみよう!
hmatsu47
PRO
0
270
pgvector 0.6.0 以降の進化についてざっくり取り上げてみる
hmatsu47
PRO
0
21
Cloudflare Workes からMySQL 系 DB への接続事情(2024/4 現在)
hmatsu47
PRO
0
45
BuriKaigi2024 にボランティアスタッフとして参加した話
hmatsu47
PRO
0
62
Aurora MySQL と Redshift の zero-ETL 統合のフィルター機能を試してみた
hmatsu47
PRO
0
82
Aurora MySQL 3.06 の ML 機能で Bedrock アクセスを試してみた
hmatsu47
PRO
0
68
RDS Data API と Aurora zero-ETL 統合と BuriKaigi2024 の話
hmatsu47
PRO
0
32
RDS Data API のその後と Aurora zero-ETL 統合のデータ転送処理の話
hmatsu47
PRO
0
81
RDS_Aurora 関連アップデート 2023 版
hmatsu47
PRO
0
82
Other Decks in Technology
See All in Technology
How to Think Like a Performance Engineer
csswizardry
4
590
エンジニアの生存戦略 〜クラウド潮流の経験から紐解く技術トレンドのメカニズムと乗りこなし方〜
shimy
9
1.9k
エンジニアリングマネージャーはどう学んでいくのか #devsumi / How Do Engineering Managers Continue to Learn and Grow?
expajp
4
1.3k
AOAI Dev Day - Opening Session
yoshidashingo
2
470
ACRiルーム最新情報とAMD GPUサーバーのご紹介
anjn
0
160
コンテナ・K8s研修 - 前半 コンテナ基礎・ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
170
AIエージェントを現場に導入する目線とは
masahiro_nishimi
1
1.5k
CTOから見た事業開発とプロダクト開発 / My Perspective on Business and Product Development as CTO
keisuke69
4
960
AI研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
130
[NIKKEI Tech Talk] KDDI/KAG Scrum & Community for Engineering Training
curanosuke
2
220
技術負債による事業の失敗はなぜ起こるのか / Why do business failures due to technical debt occur?
i35_267
0
190
ここがすごいよ! AWS Systems Manager!
saichan11
0
1.8k
Featured
See All Featured
Making Projects Easy
brettharned
111
5.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
360
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
19k
Navigating Team Friction
lara
181
13k
10 Git Anti Patterns You Should be Aware of
lemiorhan
652
58k
Fantastic passwords and where to find them - at NoRuKo
philnash
42
2.7k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
229
130k
Building Better People: How to give real-time feedback that sticks.
wjessup
357
18k
Design by the Numbers
sachag
277
18k
The Cult of Friendly URLs
andyhume
75
5.9k
Code Review Best Practice
trishagee
58
16k
Transcript
RDS / Aurora パフォーマンスインサイトの データを Athena と QuickSight で見る JAWS-UG
名古屋 データ分析を学ぶ 2021/05/31 まつひさ(hmatsu47)
自己紹介 松久裕保(@hmatsu47) https://qiita.com/hmatsu47 名古屋で Web インフラのお守り係をしています (ほかに書くことがなくなったので省略) 2
今日の内容 • パフォーマンスインサイトとその問題点のおさらい • API 経由で S3 にデータを書き出してみる ◦ Lambda(Python)で
S3 へ • Glue クローラを使って Athena へ ◦ Athena でクエリを実行してみる • Athena から QuickSight へ ◦ QuickSight でグラフ化してみる 3
パフォーマンスインサイトとは • RDS / Aurora の負荷とその内訳を示すもの ◦ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_ PerfInsights.Overview.html •
カウンターメトリクス ◦ 性能に関係するカウンター値を個別にグラフ表示 • データベースのロード ◦ 負荷の高さと内訳をグラフ表示 4
パフォーマンスインサイトとは • RDS / Aurora の負荷とその内訳を示すもの ◦ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_ PerfInsights.Overview.html •
カウンターメトリクス ◦ 性能に関係するカウンター値を個別にグラフ表示 • データベースのロード ◦ 負荷の高さと内訳をグラフ表示 5
データベースのロード 6
データベースのロード • 合計:単位時間あたり平均コネクション数 • 内訳:待機イベント毎の所要時間 ◦ 上位 9 個(※)+ CPU
時間(緑)で計 10 個 (※)「上位 9 個」は選択期間内における上位 9 個 ◦ 正規化した SQL(文)上位 10 個の待機イベント内訳も表示可能 ▪ SQL(文)正規化 ≠ DB(テーブル)正規化 ▪ 空白・クォート等を揃え、 パラメータを「?」に置き換え • トークン化 7
待機イベント 8 時間が掛かる処理 • ログの書き出し ◦ MySQL の場合バイナリログもある • なんらかのロック・mutex(排他制御の待ち時間)
• データの書き出し • データの読み取り(ストレージから>メモリから) • クライアントの接続
問題点 • 選択期間内の上位 10 個 ≠ 対象時間の上位 10 個の場合 (※)待機イベントの場合は
CPU を含めて 10 個 ◦ 一部の待機イベント・SQL(文)が漏れる ◦ 合計値が本来より低くなる ▪ 一般的なワークロードでは SQL(文)が数十種類以上になるはず • 待機別よりも SQL 別のスライスのほうが実際の合計値から乖離しやすい 9
対策 : API 経由で書き出したものを分析する • API で値を取得する方法 ◦ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights. API.html
• 今回は Lambda Python で Boto3 低レベルクライアント (PI)を使って S3 に(正規化した)SQL(文)を転送 ◦ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/pi.html ◦ S3 に転送したデータを Glue 経由で Athena から参照 ▪ さらに QuickSight でグラフ化 10
11 ① S3 転記用の Lambda 関数を作成・実行
12 https://github.com/hmatsu47/performance_insights_to_s3 (今回は lambda_function_events.py のコードを使用) https://qiita.com/hmatsu47/items/9814d5c69c136c185c41 ① S3 転記用の Lambda
関数を作成・実行
13 ② S3 に転記されたデータを確認
14 ③ Athena でワークグループを作成し、データソースを接続
15 ④ Glue クローラを追加・実行
16 ④ Glue クローラを追加・実行
17 ⑤ Athena でクエリを実行
18 ⑥ QuickSight で Athena をソースとするデータセットを作成
19 ⑦ QuickSight でデータセットを編集
20 ⑦ QuickSight でデータセットを編集(日付フィールドが文字列のままだと都合が悪いので編集して日付形式へ)
21 ⑦ QuickSight でデータセットを編集(必要な計算フィールドを追加)
22 ⑧ QuickSight でデータセットをグラフ化(ビジュアルタイプを選びフィールドを割り当て表示形式を調整)
23 ⑧ QuickSight でデータセットをグラフ化(グループ化フィールド変更)
24 ⑧ QuickSight でデータセットをグラフ化(別グラフ追加)
まとめ • API で書き出したデータを使うと細部を可視化可能 ◦ RDS のマネジメントコンソールでは表示できない部分も • ただし限界はある ◦
負荷が高い SQL(文)の抽出とチューニングにはある程度使える ◦ 遅い原因が不明な SQL(文)では待機イベントの抽出が必要だ が、SQL(文)を特定してその待機イベントを調査…のような使 い方がしづらい ▪ 多くのケースで秒単位のデータが必要だが、書き出しの負担が大きい ◦ API にはレートリミットがある 25