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
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
390
スタートアップの開発とクラウドサービス
tsankyo
0
200
水産業ドメイン可視化と実装のコツ〜釣って捌いて食べてみる〜
tsankyo
1
850
素早く価値を届けるために スタートアップのプロダクトデリバリー戦略
tsankyo
0
670
水産業の辛いポイント、Railsがいてくれたから乗り越えられた
tsankyo
1
1.1k
Other Decks in Technology
See All in Technology
Node vs Deno vs Bun 〜推しランタイムを見つけよう〜
kamekyame
1
350
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
310
I tried making a solo advent calendar!
zzzzico
0
140
「違う現場で格闘する二人」——社内コミュニティがつないだトヨタ流アジャイルの実践とその先
shinichitakeuchi
0
170
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
60k
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
280
2025年のデザインシステムとAI 活用を振り返る
leveragestech
0
730
【Agentforce Hackathon Tokyo 2025 発表資料】みらいシフト:あなた働き方を、みらいへシフト。
kuratani
0
100
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
170
Next.js 16の新機能 Cache Components について
sutetotanuki
0
220
Cloud WAN MCP Serverから考える新しいネットワーク運用 / 20251228 Masaki Okuda
shift_evolve
PRO
0
140
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
Optimizing for Happiness
mojombo
379
70k
Code Review Best Practice
trishagee
74
19k
BBQ
matthewcrist
89
9.9k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
120
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
48
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Rails Girls Zürich Keynote
gr2m
95
14k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
360
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
100
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) こういうチューニングもあるよ。 というのがあればぜひ教えてください🙏