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
データベースのメモリ管理周り〜OutofMemoryを撲滅したい〜
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Sankyo Toshio
July 20, 2024
Technology
0
160
データベースのメモリ管理周り〜OutofMemoryを撲滅したい〜
最近DB周りで起きたインシデントへの考察と対策をお話します。
Sankyo Toshio
July 20, 2024
Tweet
Share
More Decks by Sankyo Toshio
See All by Sankyo Toshio
広島発!スタートアップ開発の裏側
tsankyo
0
400
スタートアップの開発とクラウドサービス
tsankyo
0
200
水産業ドメイン可視化と実装のコツ〜釣って捌いて食べてみる〜
tsankyo
1
870
素早く価値を届けるために スタートアップのプロダクトデリバリー戦略
tsankyo
0
680
水産業の辛いポイント、Railsがいてくれたから乗り越えられた
tsankyo
1
1.1k
Other Decks in Technology
See All in Technology
配列に見る bash と zsh の違い
kazzpapa3
3
170
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
240
旅先で iPad + Neovim で iOS 開発・執筆した話
zozotech
PRO
0
100
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
230
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
390
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
110
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
410
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
OpenShiftでllm-dを動かそう!
jpishikawa
0
140
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
AIが実装する時代、人間は仕様と検証を設計する
gotalab555
1
530
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
The Language of Interfaces
destraynor
162
26k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
My Coaching Mixtape
mlcsv
0
50
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
160
For a Future-Friendly Web
brad_frost
182
10k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
280
Fireside Chat
paigeccino
41
3.8k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Transcript
データベースのメモリ管理周り by さんきょー(@t3qyo) Road to SRE NEXT@広島 LT
• さんきょー @t3qyo • PdMとたまにエンジニア • カープファン • 広島Uターンで水産業関連のスタートアップに 自己紹介
2 今、気仙沼(宮城)の カツオが脂のっててお すすめです✨
今日話すこと 3 こういうチューニングもあるよ。 というのがあればぜひ教えてください🙏 最近DB周りで起きたインシデントへの考察と対策をお話します。 本業はDB畑ではないんですが、このインシデントを解決したくて今回の登壇を機 にいろいろ調べました。
最近Sentry がこいつをちらほら 4
あかんやつです😢 5
考察 6 • ここ最近で発生するようになった • 発生タイミングはだいたい決まっている ◦ 一括アップロードを行っているタイミングが怪しいが Staging環境で負荷テストを行っても再現しない(そもそも完全 に本番環境を再現できていない)
一括アップロード単独で発生するわけでもなさそう。 • データベースのスペックは(まだ)問題なさそう。 平時は問題ないので、単純にスケールアップはしたくない ◦ 最大コネクション数 ◦ メモリ
やったこと 7 • Scout APMで重たい処理を確認して、 APIレベルのN+1潰す。使用メモリ削減 • Slow DB Queryを確認して対策
• 小さいクエリでも、毎回DB問い合わせ不要なものはキャッシュを使 う • Postgresの作業メモリ(work_mem)をデフォルト値から増やす
やったこと 8 • Scout APMで重たい処理を確認して、 APIレベルのN+1潰す。使用メモリ削減 •
やったこと 9 • Scout APMで重たい処理を確認して、 APIレベルのN+1潰す。使用メモリ削減 •
やったこと 10 • Slow DB Queryを確認して対策 謎のCOPY文 BIへの定期的な自前コピー処理が原因😭 → 外して、Replicaを使うように
• 小さいクエリでも、毎回DB問い合わせ不要なものはキャッシュを使 う やったこと 11
やったこと 12 • Postgresの作業メモリ(work_mem)をデフォルト値から増やす ◦ work_memが小さいとメモリを使ったクイックソートなどができ ず、実行計画が高くなる(参考) ◦ データ量が増えるにつれて適切な作業メモリを設定する必要があ る(参考)
学び 13 • ScoutAPMでAPIのメモリ使用状況可視化しておいてよかった ◦ ただ、(当たり前だが)DBに直接接続しているクライアントのクエリな どはDB側の監視ツールで把握する必要がある →API、DB両軸での対応が必要 • 単発のSQLでは発生しなくても、ユーザー数増加、他処理との組み合わせで
Out Of Memoryが発生する • Postgresではサービス拡大に合わせた作業メモリ(work_mem)の設定が必 要 • DBバックアップ、コピーの処理もメモリに影響を与えている
これから 14 • DBレベルでのSlow Query、メモリ利用状況をもっとわかりやすく取れるよ うにしたい💪 • AutoScaleしてくれるサービスへの移行も検討していきたい
ありがとうございました Road to SRE NEXT@広島 LT by さんきょー(@t3qyo) こういうチューニングもあるよ。 というのがあればぜひ教えてください🙏