[pgpool-committers: 2712] pgpool: Add new parameter "serialize_accept".

Tatsuo Ishii ishii at postgresql.org
Sun Oct 4 23:35:53 JST 2015

Add new parameter "serialize_accept".

This parameter defines whether to serialize accept() call for incoming
client connections.  Default is off, which means no serializing (same
behavior as pgpool-II 3.4 or before).  If this is off, the kernel
wakes up all of pgpool-II child process to execute accept() and one of
them actually accepts the incoming connection.  Problem here is,
because so my child process wake up at a same time, heavy context
switching occurred and the performance is affected.  This phenomena is
a classic problem called "the thundering herd problem".  By enabling
serialize_accept, only one of pgpool-II child process is woken up and
executes accept() and the problem can be avoided.

If child_life_time is enabled, serialize_accept has no effect.  If you
are care about pgpool-II process memory leak or whatever potential
issue, you could use child_max_connections instead.  This is purely an
implementation limitation and maybe we could eliminate it in the



Modified Files
doc/pgpool-en.html                         |   40 ++++++++++++++++++++++++++
doc/pgpool-ja.html                         |   42 ++++++++++++++++++++++++++++
src/config/pool_config.c                   |   15 ++++++++++
src/config/pool_config.l                   |   15 ++++++++++
src/include/pool.h                         |    3 +-
src/include/pool_config.h                  |    1 +
src/protocol/child.c                       |   19 +++++++++++++
src/sample/pgpool.conf.sample              |    3 ++
src/sample/pgpool.conf.sample-master-slave |    3 ++
src/sample/pgpool.conf.sample-replication  |    3 ++
src/sample/pgpool.conf.sample-stream       |    3 ++
src/utils/pool_process_reporting.c         |    5 ++++
12 files changed, 151 insertions(+), 1 deletion(-)

More information about the pgpool-committers mailing list