Расчёт максимального количества подключений к 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.

zakroma_storage_composer.postgresql_max_open_conns (или zakroma_storage_core.postgresql_max_open_conns)

Максимальное количество открытых подключений к базе данных для сервиса composer (core). Умножается на 2, так как сервис использует два пула подключений.

zakroma_storage_gateway.postgresql_max_open_conns

Максимальное количество открытых подключений к базе данных для сервиса gateway.

zakroma_storage_seclog.postgresql_max_open_conns

Максимальное количество открытых подключений к базе данных для сервиса seclog (если включен).

zakroma_storage_workers.postgresql_max_open_conns * количество шардов

Максимальное количество открытых подключений к базе данных для одного worker, умноженное на количество шардов (worker’ов).

zakroma_storage_notification.postgresql_max_open_conns

Максимальное количество открытых подключений к базе данных для сервиса notification (если модуль включен).

Дополнительные подключения для Keycloak

Если используется Keycloak для аутентификации, добавляется 200 подключений к общему количеству.

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

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

  • Количество нод: 3
  • zakroma_storage_core.postgresql_max_open_conns: 10
  • zakroma_storage_gateway.postgresql_max_open_conns: 10
  • zakroma_storage_seclog.postgresql_max_open_conns: 10 (включен)
  • zakroma_storage_workers.postgresql_max_open_conns: 10
  • Количество шардов (workers): 2
  • zakroma_storage_notification.postgresql_max_open_conns: 10 (включен)
  • Используется 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 в конфигурации PostgreSQL равным или превышающим рассчитанное значение.

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