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
スロークエリとの戦いの軌跡2024 / ゆるSRE勉強会 #10
Search
Ryo Takaishi
April 04, 2025
1
590
スロークエリとの戦いの軌跡2024 / ゆるSRE勉強会 #10
https://yuru-sre.connpass.com/event/348136/
Ryo Takaishi
April 04, 2025
Tweet
Share
More Decks by Ryo Takaishi
See All by Ryo Takaishi
AWSを使ったカンファレンスの 配信アーキテクチャ - 吉祥寺.pm37
takaishi
2
450
どうやればインシデント対応能力を鍛えられるのか? / SRE Kaigi 2025
takaishi
11
9.9k
Podcastを3年半続ける技術と得た物 / ya8-2024
takaishi
5
1.8k
入門!ClusterAPI 〜 k8s クラスターも k8s API で管理したい 〜 / k8s_meetup_31
takaishi
3
4.5k
CloudNativeへの道 リーダーシップとフォロワーシップ / 201911-cndjp13
takaishi
2
900
ClusterAPI v1alpha1 → v1alpha2 / k8s_meetup_23
takaishi
1
1.5k
実録!CloudNativeを 目指した230日 / cloud-native-days-tokyo-2019
takaishi
2
2.5k
Consul Connect and Kubernetes Integration / cloud native meetup tokyo 7
takaishi
2
2.3k
ソフトウェアエンジニア の楽しみ / 2018-pepaboudon
takaishi
0
230
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.2k
Being A Developer After 40
akosma
90
590k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Documentation Writing (for coders)
carmenintech
69
4.7k
Designing Experiences People Love
moore
141
23k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Done Done
chrislema
183
16k
Why Our Code Smells
bkeepers
PRO
336
57k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
18
1.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
12
650
Transcript
スロークエリとの戦いの軌跡2024 髙石 諒 / @r_takaishi ゆるSRE勉強会 #10
自己紹介 • 髙石 諒 ◦ x.com/r_takaishi ◦ github.com/takaishi • ソフトウェア
エンジニア / ポッドキャスター • 現所属は株式会社フライル ◦ クラウドインフラ中心にいろいろ • 副業でスタートアップのクラウドインフラ・基盤整備 • CloudNative Daysのシステム開発
None
None
こういうの作ってます • tfclean (https://github.com/takaishi/tfclean) ◦ terraformの import/moved/removed ブロックを削除するツール • terraform-j2md
(https://github.com/reproio/terraform-j2md) ◦ terraform planの結果をMarkdownとして整形するツール • batron (https://github.com/takaishi/batron) ◦ AWS Batchのジョブ定義をデプロイするツール
2024年
スロークエリ問題 • RDBのスロークエリはユーザー体験悪化の原因の一つ ◦ レスポンスが返ってこない ◦ 他テナントで重いクエリが走っていると影響を受ける(ノイジーネイバー) • 一応スロークエリログは通知していた •
有効活用できていない ◦ 通知数が多く見ることもできない ◦ スロークエリがユーザーに対してどのような影響があるのかわからない
早く気がつく 早く直す 発生を抑える
打ち手 • 早く気がつく ◦ スロークエリ検知・通知の改善 • 早く直す ◦ データベースモニタリングの強化 ◦
改善時の検証・確認の高速化 • 発生を抑える ◦ Aurora Serverless v2
早く気がつく:監視・通知の改善 • それまで:スロークエリログを素朴にSlack通知 • 閾値の問題でもあるが、通知数が多く対応できない • どの処理で発生したクエリかわからない ◦ ユーザーへの影響がどの程度あるか判断しにくい ◦
バッチなどの非同期処理だと影響は小さいかもしれないが、ユーザーからのリクエストのよ うな同期処理だと影響が大きいかもしれない
早く気がつく:監視・通知の改善 • 閾値を変更 • 監視対象をスロークエリからスローリクエストに変更 ◦ Datadog APMを利用し、閾値ベースで監視・通知 ◦ ユーザーへの影響を判断しやすい
◦ APMのトレース情報にテナント情報を付与し、影響範囲がすぐわかるようにする ◦ 実はアプリケーション側にも遅い要因があるな、なども気づきやすくなった
早く直す:データベースモニタリングの強化 • アプリケーションモニタリングはDatadog APMで実現 • データベースはAWSのPerformance Insightsでモニタリング ◦ Performance Insightsはデータ保存が7日までなら無料なので有効にした方がお得
◦ Waits、SQLなどいくつかの切り口で可視化 ◦ メトリクスとあわせて調べられる • もっとモニタリングしたい ◦ スローリクエスト発生時、トレースからクエリの実行計画を透過的に見たい
Datadog Database Monitoring • 過去のクエリについて実行計画を確認できる • クエリ間のブロックなども後から確認できる • APMと連携してスローリクエストからシームレスにスロークエリを分析可能 •
しかし、導入当初はAPMとうまく連携できなかった ◦ Prepared Statementに対応していなかった ◦ 少し前に対応し、APMから透過的にスロークエリの実行計画を確認可能になった
早く直す:スロークエリ改善の検証高速化 • スロークエリが発生するようなデータを再現するのは大変 • 本番環境で検証・確認したいが、本番DBをそのまま使うわけにはいかない ◦ インデックスを追加するケースなど • AWS RDSを使っているので、レプリカを作り、それを使えばいい
◦ 間違って本番環境で操作してしまうと事故に繋がる ◦ 当初は手作業かつダブルチェックしてレプリカを利用していた • 安全にレプリカを作成・使える仕組みを実装
発生を抑える:ノイジーネイバー問題 • 長時間クエリが実行され続けると、他のクエリ実行にも影響がでる ◦ PostgreSQLは基本的に1クエリを1プロセスで処理する ◦ 他のクエリが実行待ちになり、連鎖的にパフォーマンスが悪化することがある • 地道にクエリを改善しても、遅いクエリが実行される可能性はゼロではない •
RDSのDBインスタンスクラスを大きくする? ◦ 普段は大きいインスタンスが不要 ◦ CPUリソースが足りなくなる度にスケールアップするのは大変
発生を抑える:Aurora Serverless v2 • ワークロードに応じて動的に性能を増減できる ◦ CPU、メモリ、ストレージなど • もしスロークエリによって1コアが占有されても他のクエリが実行できるよ うにスケールする
• ただしコストはかかる
早く気がつく 早く直す 発生を抑える
まとめ • 早く気がつく ◦ スロークエリ検知・通知の改善 • 早く直す ◦ データベースモニタリングの強化 ◦
改善時の検証・確認の高速化 • 発生を抑える ◦ Aurora Serverless v2
ここにフライルの紹介スライドをいれる We are hiring!