doc/developer_manual/cookbook/how-to-calculate-required-db-connection-count.md
This document intends to aid with calculating a proper PostgreSQL max_connections value for Zammad.
The technical maximum connection count is the number of physical Zammad/Rails processes (not threads inside them) multiplied by the size of the connection pool (default 50).
The actually used connection count is lower and depends on a number of other factors which is hard to predict / calculate. Therefore we'll provide only the technical maximum value.
max_connections = number_of_zammad_processes * connection_pool_size
number_of_zammad_processes =
number_of_railsserver_processes +
number_of_background_worker_processes +
number_of_other_processes +
1 # for websocket
number_of_railsserver_processes = number_of_railsserver_pods * (WEB_CONCURRENCY || 1)
number_of_background_worker_processes =
1 + # main process
ZAMMAD_MANAGE_SESSIONS_JOBS_WORKERS +
ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS +
ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS +
ZAMMAD_PROCESS_DELAYED_AI_JOBS_WORKERS +
ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS
number_of_other_processes =
count_of_concurrent_cronjobs_or_service_pods + # automatic processes starting Zammad, such as reindex cronjobs
count_of_concurrent_manual_rails_commands # manual `rails r / rails c` calls.