openvibers/openvibe.host Commits
Data role: PostgreSQL max_connections 200 and smaller PgBouncer pools (5 per database, cap 10, idle server connections closed after 60 s) (#34)
Changes
@@@ -14,11 +14,14 @@ auth_dbname = postgresauth_query = SELECT usename, passwd FROM pgbouncer.get_auth($1)pool_mode = transactionmax_client_conn = 2000--default_pool_size = 10++; Pools are per database/user and ~30 services share one PostgreSQL (max_connections 200): small pools, idle server++; connections closed after a minute, and a per-database cap, so no burst can take every server slot (2026-10-08: a++; boot-time migration on the direct URL found none left). A busy database can get its own pool_size under [databases].++default_pool_size = 5min_pool_size = 0reserve_pool_size = 2--max_db_connections = 20--server_idle_timeout = 300++max_db_connections = 10++server_idle_timeout = 60query_wait_timeout = 30ignore_startup_parameters = extra_float_digits,options,application_namestats_users = ov_monitor@@@ -2,7 +2,8 @@# Sized for the shared host (4 vCPU, 15 GB RAM) until the data role has its own machine; revisit then.listen_addresses = '127.0.0.1' # the private network address is added when a second host joins (WS-X1)port = 5432--max_connections = 120 # applications connect through PgBouncer (transaction pooling)++max_connections = 200 # applications connect through PgBouncer (transaction pooling); 120 ran out on 2026-10-08++ # (~30 databases × idle server connections) and boot-time migrations on the direct URL failedpassword_encryption = scram-sha-256shared_buffers = 1GB
@@ -14,11 +14,14 @@ auth_dbname = postgres
@@ -14,11 +14,14 @@ auth_dbname = postgres
auth_query = SELECT usename, passwd FROM pgbouncer.get_auth($1)
auth_query = SELECT usename, passwd FROM pgbouncer.get_auth($1)
pool_mode = transaction
pool_mode = transaction
max_client_conn = 2000
max_client_conn = 2000
-default_pool_size = 10
+; Pools are per database/user and ~30 services share one PostgreSQL (max_connections 200): small pools, idle server
+; connections closed after a minute, and a per-database cap, so no burst can take every server slot (2026-10-08: a
+; boot-time migration on the direct URL found none left). A busy database can get its own pool_size under [databases].
+default_pool_size = 5
min_pool_size = 0
min_pool_size = 0
reserve_pool_size = 2
reserve_pool_size = 2
-max_db_connections = 20
-server_idle_timeout = 300
+max_db_connections = 10
+server_idle_timeout = 60
query_wait_timeout = 30
query_wait_timeout = 30
ignore_startup_parameters = extra_float_digits,options,application_name
ignore_startup_parameters = extra_float_digits,options,application_name
stats_users = ov_monitor
stats_users = ov_monitor
@@ -2,7 +2,8 @@
@@ -2,7 +2,8 @@
# Sized for the shared host (4 vCPU, 15 GB RAM) until the data role has its own machine; revisit then.
# Sized for the shared host (4 vCPU, 15 GB RAM) until the data role has its own machine; revisit then.
listen_addresses = '127.0.0.1' # the private network address is added when a second host joins (WS-X1)
listen_addresses = '127.0.0.1' # the private network address is added when a second host joins (WS-X1)
port = 5432
port = 5432
-max_connections = 120 # applications connect through PgBouncer (transaction pooling)
+max_connections = 200 # applications connect through PgBouncer (transaction pooling); 120 ran out on 2026-10-08
+ # (~30 databases × idle server connections) and boot-time migrations on the direct URL failed
password_encryption = scram-sha-256
password_encryption = scram-sha-256
shared_buffers = 1GB
shared_buffers = 1GB