mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2026-07-16 19:53:53 +03:00
Make postgres_max_connections scale with the Synapse worker count
With workers enabled, every Synapse process (the main one and each worker) maintains its own database connection pool of up to matrix_synapse_database_cp_max (default: 10) connections. The previous fixed limit of 500 left little headroom on setups running many workers, where exhausting it manifests as degraded performance and, reportedly, E2EE misbehavior. Size the limit as a 200-connection baseline (for everything else that talks to Postgres) plus cp_max connections per Synapse process, never going below the previous value of 500. The stock worker presets stay at 500; setups that raise worker counts (or cp_max) get a limit that grows accordingly. The new matrix_synapse_workers_total_count variable reflects what the matrix_synapse_workers_*_count variables ask for; it does not reflect a manually populated matrix_synapse_workers_enabled_list, and such setups should override postgres_max_connections themselves. Fixes #4442 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4046,7 +4046,13 @@ postgres_db_name: matrix
|
||||
|
||||
postgres_systemd_services_to_stop_for_maintenance_list_auto: "{{ devture_systemd_service_manager_services_list_auto | map(attribute='name') | reject('equalto', (postgres_identifier + '.service')) }}"
|
||||
|
||||
postgres_max_connections: "{{ 500 if matrix_synapse_workers_enabled else 200 }}"
|
||||
# When Synapse workers are enabled, connection demand grows with the number of Synapse processes:
|
||||
# each process (the main one and every worker) maintains its own connection pool of up to `matrix_synapse_database_cp_max` connections.
|
||||
# The formula below reserves a 200-connection baseline for everything else talking to Postgres and adds `cp_max` per Synapse process.
|
||||
# It never goes below 500, the fixed value used previously, so existing worker setups are not downsized.
|
||||
# Note: the worker count reflects the `matrix_synapse_workers_*_count` variables.
|
||||
# If you populate `matrix_synapse_workers_enabled_list` manually, consider overriding `postgres_max_connections` yourself.
|
||||
postgres_max_connections: "{{ [200 + (matrix_synapse_database_cp_max | int) * ((matrix_synapse_workers_total_count | int) + 1), 500] | max if matrix_synapse_workers_enabled else 200 }}"
|
||||
|
||||
postgres_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else postgres_container_image_registry_prefix_upstream_default }}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user