Pgpool num_init_children
num_init_children
は client の同時接続上限数 (prefork する Pgpool-II process 数)- default 32 本
num_init_children
が上限に達した場合, client は既存 process への接続が閉じるまで待たされる.reserved_connections
が1以上に設定されている場合を除く.- Postgres 側に直接接続した場合のように接続拒否 error は無い.
- 待たされる数の上限は
listen_backlog_multiplier * num_init_children
. - 既存の
num_init_children
に対するmax_connection
の割合を算出する (瞬間最大値). num_init_children
は想定 connection 消費量の倍が推奨されるが, 1.7倍程度 ~ でも問題無いと思われる.
PostgreSQL max_connections
- Client 接続最大数.
- Client 単位で memory resource が割り当てられる為,
work_mem
等に大きく影響する.- Client 最大数 ≒ 最大想定 memory 使用量.
max_connection
は max_pool * num_init_children[ * 2] <= (max_connections - superuser_reserved_connections)` が推奨- `num_init_children の倍でも問題無さそう
- 今の上記で算出した割合でそのまま
num_init_children
,max_connection
を増やし倍に達さなくとも, 実績値ベースで問題無ければそれで良い.
最大消費 memory の算出
max_connections
が増える分, client 単位で memory を消費する為, 最大消費 memory 数の机上計算が必要.worm_mem * max_connections
work_mem
の適正 size を見積もり,work_mem
としても値を大きく出来る余裕があるかも確認しておくと良さそう.(server memory size - shared_buffer) / max_connections