Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DBコネクションプール Database Connection Pooling
Search
Neurogica
June 11, 2026
Technology
71
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
MapReduceを読む - 大量データを分担する Understanding MapReduce — Distributing Large-Scale Data Processing
neurogica
0
4
Sparse Autoencoder 〜 大規模言語モデルの内部表現を読む 〜 Sparse Autoencoder: Understanding LLM's Latent Representations
neurogica
0
39
LLMは“⼼”をモデル化しているのか? Do LLMs Model the Mind?
neurogica
0
18
LLM-MAS×時系列予測 LLM-MAS × Time-Series Forecasting
neurogica
0
51
推薦タスクの整理と 時系列基盤モデル活用を考える How Recommender Systems Use Time-Series Data and Where Foundation Models Fit
neurogica
0
21
画像生成AIの生成速度の遅さと 画風のばらつきを解決する手法 Methods for Solving Image Generation AI's Slowness and Style Inconsistency
neurogica
0
24
時系列基盤モデルは作れるのか? Can We Build a Foundation Model for Time Series?
neurogica
1
130
双曲空間と機械学習 〜 階層性を活かした学習〜 Hyperbolic Space and Machine Learning ~ Learning that Leverages Hierarchical Structure ~
neurogica
0
51
PENGUIN: General Vital Sign Reconstruction from PPG with Flow Matching State Space Models | ICASSP 2026
neurogica
0
84
Other Decks in Technology
See All in Technology
今さら理解するウェブフォントver.2026
takanorip
3
650
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
150
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
900
Deep Data Security 機能解説
oracle4engineer
PRO
2
760
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
1.9k
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
620
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.2k
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
会社説明資料
persolserverworks
0
9.7k
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
170
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.2k
Incremental HTTP
kazuho
5
2.1k
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Paper Plane
katiecoart
PRO
4
54k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
A Tale of Four Properties
chriscoyier
163
24k
Speed Design
sergeychernyshev
33
2.1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Documentation Writing (for coders)
carmenintech
77
5.6k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
Un-Boring Meetings
codingconduct
0
450
Visualization
eitanlees
153
17k
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.