Расчёт максимального количества подключений к PostgreSQL

Перед установкой Закрома.Хранение необходимо заранее выставить корректное значение количества подключений в PostgreSQL. Для этого необходимо воспользоваться следующей схемой расчёта максимального количества подключений.

Формула расчёта

1<количество нод> * ( 2 <zakroma_storage_composer.postgresql_max_open_conns> * 2 + 3 <zakroma_storage_gateway.postgresql_max_open_conns> + 4 <zakroma_storage_seclog.postgresql_max_open_conns> + 5 <zakroma_storage_workers.postgresql_max_open_conns> * <кол-во шардов> + 6 <zakroma_storage_notification.postgresql_max_open_conns | если включён модуль> 7) + <200 | если используется keycloak>

Компоненты формулы

Значения по умолчанию приведены для роли zakroma-storage версии 10.0.4.

КомпонентЗначение по умолчаниюКак учитывается в расчёте
Количество нодЗависит от количества нод в инвентаре ansible.Количество серверов (нод), на которых установлен Zakroma Storage.
zakroma_storage_composer.postgresql_max_open_conns или zakroma_storage_core.postgresql_max_open_conns10 (20 с учётом двух пулов)Максимальное количество открытых подключений к базе данных для сервиса composer (core). Умножается на 2, так как сервис использует два пула подключений.
zakroma_storage_gateway.postgresql_max_open_conns10Максимальное количество открытых подключений к базе данных для сервиса gateway.
zakroma_storage_seclog.postgresql_max_open_conns10; сервис отключёнМаксимальное количество открытых подключений к базе данных для сервиса seclog (если включён).
zakroma_storage_workers.postgresql_max_open_conns × количество шардов10 на worker;Максимальное количество открытых подключений к базе данных для одного worker, умноженное на количество шардов (worker’ов).
zakroma_storage_notification.postgresql_max_open_conns10;Максимальное количество открытых подключений к базе данных для сервиса notification (если модуль включён).
Дополнительные подключения для Keycloak200, если используетсяЕсли используется Keycloak для аутентификации, добавляется 200 подключений к общему количеству.

Пример расчёта

Исходные данные

Пример расчёта для типовой конфигурации:

ПараметрЗначение
Количество нод3
zakroma_storage_core.postgresql_max_open_conns10
zakroma_storage_gateway.postgresql_max_open_conns10
zakroma_storage_seclog.postgresql_max_open_conns10
zakroma_storage_workers.postgresql_max_open_conns10
Количество шардов (workers)2
zakroma_storage_notification.postgresql_max_open_conns10
KeycloakДа

Расчёт

Пример расчёта:

13 * (10 * 2 + 10 + 10 + 10 * 2 + 10) + 200 2= 3 * (20 + 10 + 10 + 20 + 10) + 200 3= 3 * 70 + 200 4= 210 + 200 5= 410 подключений

Настройка PostgreSQL

Параметр max_connections После расчёта максимального количества подключений необходимо установить параметр max_connections в конфигурации PostgreSQL равным или превышающим рассчитанное значение.

Рекомендуется добавить запас в 20-30% от рассчитанного значения для обеспечения стабильной работы системы.