ソフトウェア
中級
プールサイズ(プールサイズ)
DB/スレッド/ワーカーの同時接続上限。PostgreSQL pgbouncer・HikariCP・Node.js pg pool等で設定、適正値はCPUコア数 x 2程度で、過大設定はメモリ圧迫、過小は性能低下を招く。
0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
pgbouncer
HikariCP
pg pool
並列度
概要
プールサイズとは、データベース接続やスレッド、ワーカーなどの同時接続上限を設定する値です。PostgreSQL の pgbouncer、Java の HikariCP、Node.js の pg pool など、さまざまなミドルウェアで利用されます。
CPU コア数 × 2 を目安に設定することで、メモリの過負荷を防ぎつつ、スループットを最大化できるとされています。過大設定はメモリ圧迫、過小設定は処理遅延を招くため、適切なバランスが重要です。
主な特徴・仕組み
- 同時接続数の制御:プールサイズは同時に確立できる接続数を限定し、リソース競合を抑制します。
- スレッドプール:HikariCP ではスレッドプールと接続プールが分離され、各スレッドが複数接続を共有できる設計です。
- リクエストキュー:プールサイズを超えるリクエストはキューに入れられ、接続が空くまで待機します。
- CPU コア数との関係:1 コアあたり 2 つの接続を想定し、I/O バウンドの作業を並列化します。
- メモリ使用量:各接続は約 1–2 MB のメモリを消費するため、プールサイズが大きいほどメモリ負荷が増大します。
スペック/製品比較表
| 製品名 | CPU コア数 | 推奨プールサイズ | メモリ消費 (MB/接続) | 主要用途 | 備考 |
|---|---|---|---|---|---|
| Intel Core i9‑13900K | 24 | 48 | 2 | 高負荷 Web サーバ | 2025年モデル |
| AMD Ryzen 9 7950X | 32 | 64 | 1.8 | データ分析 | 2026年リリース予定 |
| NVIDIA RTX 4090 | 48 | 96 | 2.2 | GPU‑アクセラレーション | 次世代 |
| Samsung 990 Pro | 16 | 32 | 1.5 | SSD 接続プール | 最新 |
| ASUS ROG Strix X670E‑E Gaming | 20 | 40 | 1.9 | ゲームサーバ | 2025年製品 |
具体例・対応製品
- PostgreSQL + pgbouncer
- 例:pgbouncer の
pool_size = 20を設定し、CPU 8 コアのサーバで 16 GB RAM を使用。
- 例:pgbouncer の
- Java + HikariCP
- 例:
maximumPoolSize = 32、CPU 16 コア、64 GB DDR5‑6000。
- 例:
- Node.js + pg pool
- 例:
max = 50、CPU 12 コア、32 GB DDR4‑3200。
- 例:
- MySQL + ProxySQL
- 例:
max_connections = 200、CPU 8 コア、16 GB DDR4‑2400。
- 例:
- MongoDB + connection pool
- 例:
maxPoolSize = 100、CPU 24 コア、48 GB DDR4‑3600。
- 例:
自作PCでの選び方・注意点
- CPU コア数の確認
- 例:Intel Core Ultra 9 285K は 18 コアで、推奨プールサイズは 36。
- メモリ容量
- 1 接続あたり 2 MB を想定し、プールサイズ × 2 MB で必要メモリを算出。
- ディスク I/O
- SSD の IOPS が高いほど、接続数を増やしても遅延が抑えられる。
- ネットワーク帯域
- 1 Gbps では 10 k 接続で十分だが、10 Gbps であれば 20 k 以上を検討。
- スレッド数とオーバーヘッド
- スレッド数が多いほどオーバーヘッドが増えるため、CPU 16 コア以下では 2 × コア数を超えない。
- メモリページサイズ
- 64 KB ページサイズを採用した OS では、プールサイズが大きいとページフラグメントが増える。
- スケーラビリティ
- 将来のアップグレードを見越し、CPU とメモリを 10 % 余裕で選ぶ。
- 電力消費
- 450 W TDP の RTX 4090 を搭載した構成では、電源容量を 650 W 以上に設定。
関連用語との違い
| 用語 | 定義 | 主な違い |
|---|---|---|
| スレッド数 | 同時に実行されるスレッドの数 | プールサイズは接続数を制御、スレッド数は実行単位 |
| コネクションプール | 接続の再利用を行う仕組み | プールサイズはその上限値 |
| ワーカープール | タスクを実行するワーカーの数 | プールサイズはワーカー数を制御 |
| リソースプール | CPU、メモリ、I/O の総合管理 | プールサイズは接続単位のみ |
| メモリプール | メモリ領域の再利用 | プールサイズは接続数に対するメモリ使用量を示す |
よくある質問(FAQ)
Q1: プールサイズを CPU コア数 × 2 で設定すると、なぜスループットが向上するのですか?
A1: 1 コアが 1 つのスレッドを持ち、2 つの接続を同時に処理できるため、I/O 待ち時間を減らし、CPU の利用率を最大化します。
Q2: 1 接続あたりのメモリ使用量はどのくらいですか?
A2: PostgreSQL の pgbouncer では約 1.5 MB、HikariCP では 2 MB 程度が一般的です。実際の数値はデータベースの設定やクエリの内容により変動します。
Q3: プールサイズを 0 に設定するとどうなりますか?
A3: 0 は無制限を意味し、接続数が無制限に増えるため、メモリが枯渇しやすく、サーバが不安定になる恐れがあります。
まとめ
プールサイズは、同時接続数を制御し、CPU とメモリのバランスを保つための重要なパラメータです。
- CPU コア数 × 2 をベースに設定し、メモリ消費 を考慮する。
- 製品ごとの推奨値 を参照し、最新 技術(2025年・2026年のリリース)を踏まえて選択。
- スレッド数 や I/O バウンド の特性を理解し、次世代 のハードウェアとソフトウェアを組み合わせることで、安定かつ高速なシステムを構築できます。