0

I have installed pgpool 3.2.1 with 2 backends in streaming replication mode with load balancing and connections pool.I did some high load tests tring to colapse the pgpool connections.

Suposing that this rule is correct : max_pool*num_init_children <= (max_connections - superuser_reserved_connections)

Test 1:

num_init_children = 90 max_pool = 1

(only in the master) max_connections = 100 superuser_reserved_connections = 3

Result for psql -U postgres -c 'SELECT COUNT from pg_stat_activity' was 90.

Test 2:

num_init_children = 90 max_pool = 2

(only in the master) max_connections = 100 superuser_reserved_connections = 3

Result for psql -U postgres -c 'SELECT COUNT from pg_stat_activity' was 91. What happens with the other 6 connections to get up to 97 connections? which is the maximum number of connections I can get to postgresql.

In both cases I get all connections used in pgpoolAdmin and the connection to database get frozen and no new connections were allowed.

Thank you!

catacs
  • 191
  • 7

1 Answers1

1

In pgpool they are using the following rule to control the connections:

max_pool*num_init_children <= (max_connections - superuser_reserved_connections) (no query canceling needed) max_pool*num_init_children*2 <= (max_connections - superuser_reserved_connections) (query canceling needed)

So, the problem is when you have query cancelling you must set in postgresql the double number of connections configured in pgpool.

catacs
  • 191
  • 7