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
DBコネクションプール Database Connection Pooling
Search
Neurogica
June 11, 2026
Technology
37
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DBコネクションプール Database Connection Pooling
Neurogica
June 11, 2026
More Decks by Neurogica
See All by Neurogica
LLM-MAS×時系列予測 LLM-MAS × Time-Series Forecasting
neurogica
0
15
推薦タスクの整理と 時系列基盤モデル活用を考える How Recommender Systems Use Time-Series Data and Where Foundation Models Fit
neurogica
0
7
画像生成AIの生成速度の遅さと 画風のばらつきを解決する手法 Methods for Solving Image Generation AI's Slowness and Style Inconsistency
neurogica
0
4
時系列基盤モデルは作れるのか? Can We Build a Foundation Model for Time Series?
neurogica
0
96
双曲空間と機械学習 〜 階層性を活かした学習〜 Hyperbolic Space and Machine Learning ~ Learning that Leverages Hierarchical Structure ~
neurogica
0
42
PENGUIN: General Vital Sign Reconstruction from PPG with Flow Matching State Space Models | ICASSP 2026
neurogica
0
58
DecompSSM: A Decomposition-based State Space Model for Multivariate Time-Series Forecasting | ICASSP 2026
neurogica
0
90
AIは公平な評価, 決断を行えるか? 〜 LLM-as-a-Judgeの限界と意思決定バイアス 〜 Can AI Make Fair Evaluations and Decisions?
neurogica
0
60
最新の物体検出モデルに関するサーベイ A Survey of the Latest Object Detection Models
neurogica
0
110
Other Decks in Technology
See All in Technology
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
690
AIにブラウザを触らせて、E2EテストをPlaywrightで書く
koji_kawamura
0
380
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
gree_tech
PRO
0
320
VLMで2.3万枚のPyCon JP写真を検索!
terapyon
1
340
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.6k
【GCC2026】鉄拳8でのVFX開発事例
bandainamcostudios
PRO
0
280
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
Model Studio CLI × Token Plan
maigo999
0
210
AI for Science時代を切り開く、政府の次世代HPC戦略の展望
gpuunite_official
0
220
MIXIで活躍できるエンジニアを 若手社員目線で考えてみる
mixi_engineers
PRO
0
140
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
Kiro WebとCloud Sessions
nagisa53
2
150
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
780
YesSQL, Process and Tooling at Scale
rocio
174
15k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
210
4 Signs Your Business is Dying
shpigford
187
23k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Accessibility Awareness
sabderemane
1
180
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Transcript
DBコネクションプール 株式会社ニューロジカ 開発部 ⾺場⼤寿 1 DBコネクションプール
• DBのコネクション数意識してる? • DB接続のコストを測る • コネクションプールの仕組み • LambdaとPrismaで起きていること • 解決策:RDS
Proxy / PgBouncer • まとめ • おまけ アジェンダ はじめに コネクションプール コネクション爆発 まとめ 解決策 2 おまけ © Neurogica Inc.
• リクエストが来るたびにDBに繋ぎ直していませんか? はじめに: DBのコネクション数意識してる? 動くけど…遅い… 3 はじめに コネクションプール コネクション爆発 まとめ
解決策 おまけ © Neurogica Inc.
DB接続とは何か ̶ コストを確認する 接続確⽴だけで 50〜200ms かかることも。 クエリ⾃体が 5ms でも、接続コストが⽀配的になる。 •
DBに「繋ぐ」とき、裏では複数のステップが⾛る TCP ハンドシェイク TLS ネゴシエーション DB認証 クエリ SYN → SYN-ACK → ACK(往復レイテンシ × 1.5) 証明書検証 + 鍵交換(数往復) ユーザー名/パスワード検証、セッション確⽴ SELECT * FROM users 4 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
プールなしだと何が起きるか 毎回フルコスト レスポンスが遅延 • リクエストごとに接続 req #1 接続 → クエリ
→ 切断 req #2 接続 → クエリ → 切断 req #3 接続 → クエリ → 切断 • 同時アクセスが増えると req × 100 DB接続 × 100 PostgreSQLのデフォルト最⼤接続数は 100 同時リクエストが増えると接続上限エラー 5 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
コネクションプールの仕組み • 接続を使い回すことで、確⽴コストを払うのは最初だけ conn #1 待機中 conn #2 待機中 conn
#3 使⽤中 conn #4 使⽤中 conn #5 待機中 リクエストが来た時 1. プールから「待機中」の接続を借りる 2. クエリを実⾏ 3. 接続をプールに返却(切断しない) プールが空のとき • 新しい接続を確⽴(上限まで) • 上限に達したらキューで待機 • タイムアウトで接続エラー 6 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
プールあり vs なし ̶ ⽐較 • プールなし • プールあり req
#1 接続 150ms → クエリ → 切断 req #2 接続 150ms → クエリ → 切断 req #3 接続 150ms → クエリ → 切断 req #1 借りる 1ms → クエリ → 切断 req #2 借りる 1ms → クエリ → 切断 req #3 借りる 1ms → クエリ → 切断 起動時 接続確⽴(150ms) 7 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
LambdaとPrismaで何が起きているか • Prismaは内部にコネクションプールを持っているが... 8 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ
© Neurogica Inc.
コネクション爆発 • Lambdaはリクエストに応じて並列にインスタンスが増える Lamdba × N DB接続 × N ×
pool_size 接続上限エラー • 各Lambdaインスタンスが独⽴したプールを持つ • インスタンス数 × pool_size = 総接続数 • スケールアウトするほど接続が爆発する 9 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
解決策:接続を外部で管理する • Lambdaとアプリの間に外部コネクションプーラーを置く Lamdba #1 外部プーラー RDS Proxy / PgBouncer
DB RDS Proxy • RDS / Aurora に対応 • コスト:DB料⾦に追加で発⽣ Lamdba #2 PgBouncer(OSS) • PostgreSQL専⽤の軽量プーラー • コスト:インフラ費⽤のみ 10 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
RDS Proxy を使った場合 • DBとのコネクションはずっと貼っているが、DBとのやり取りはクエリ実⾏の短時間 → 集約可能 Lamdba #1 RDS
Proxy クライアント接続: 10 DB接続: 3 DB Lamdba #2 Lamdba #3 Lamdba #4 Lamdba #5 11 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
まとめ • DB接続には TCP / TLS / 認証 のコストがある •
コネクションプールは接続を 再利⽤ してコストを償却する • Lambdaでは インスタンスごとに独⽴したプール ができる → 接続爆発 • 解決策は 外部プーラー(RDS Proxy / PgBouncer) で接続を集約する • まず PrismaClientをモジュールスコープに出す だけでも効果あり • サーバインスタンス1つでいくつコネクションを貼っていて、DBの上限がいくつなのかを意 識しよう 12 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
アプリケーションサーバーのコネクション • アプリのコネクションプールが⼩さいと、アプリ側のコネクション割り当て待ちが発⽣ • アプリのコネクションプールが⼤きいと、Proxy/DB で詰まり、全体が遅くなる • ざっくり指定してピーク時相当の負荷試験でメトリクスやログを確認してチューニング ◦ ⼀般的な
Web API:5〜10 ◦ 軽量なクエリメイン:3〜5 ◦ DB 同時クエリが多いワーカー:10〜20 13 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ © Neurogica Inc.
Prismaのコネクション • v6だと ◦ デフォルトコネクションプール数:CPU物理コア数×2+1 ◦ プールからの接続取得タイムアウト:10秒 • v7だと ◦
デフォルトコネクションプール数:10 ◦ プールからの接続取得タイムアウト:無制限 14 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ [1] : https://www.prisma.io/docs/orm/prisma-client/setup-and-configuration/databases-connections/connection-pool © Neurogica Inc.
Postgresのコネクション • DB接続数は多ければ速いわけではない • 接続数をリソースに従って絞った⽅が多くの場合レイテンシもスループットも良くなる • 接続ごとにプロセスが⽣成されるからコンテキストスイッチやキャッシュ、ロックによって 性能が劣化する • ベンチマークの経験則では以下が良いらしい
◦ 最適なアクティブ接続数 ≈ (core_count × 2) + effective_spindle_count ◦ スピンドルはHDDの軸を指し、SSDなら0 15 はじめに コネクションプール コネクション爆発 まとめ 解決策 おまけ [2] : https://wiki.postgresql.org/wiki/Number_Of_Database_Connections © Neurogica Inc.