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
780
スロークエリとの戦いの軌跡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
530
どうやればインシデント対応能力を鍛えられるのか? / SRE Kaigi 2025
takaishi
13
11k
Podcastを3年半続ける技術と得た物 / ya8-2024
takaishi
5
1.9k
入門!ClusterAPI 〜 k8s クラスターも k8s API で管理したい 〜 / k8s_meetup_31
takaishi
3
4.7k
CloudNativeへの道 リーダーシップとフォロワーシップ / 201911-cndjp13
takaishi
2
950
ClusterAPI v1alpha1 → v1alpha2 / k8s_meetup_23
takaishi
1
1.6k
実録!CloudNativeを 目指した230日 / cloud-native-days-tokyo-2019
takaishi
2
2.6k
Consul Connect and Kubernetes Integration / cloud native meetup tokyo 7
takaishi
2
2.3k
ソフトウェアエンジニア の楽しみ / 2018-pepaboudon
takaishi
0
260
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Side Projects
sachag
455
43k
Done Done
chrislema
185
16k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
RailsConf 2023
tenderlove
30
1.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
A Modern Web Designer's Workflow
chriscoyier
697
190k
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!