Расчёт максимального количества подключений к 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_conns | 10 (20 с учётом двух пулов) | Максимальное количество открытых подключений к базе данных для сервиса composer (core). Умножается на 2, так как сервис использует два пула подключений. |
zakroma_storage_gateway.postgresql_max_open_conns | 10 | Максимальное количество открытых подключений к базе данных для сервиса gateway. |
zakroma_storage_seclog.postgresql_max_open_conns | 10; сервис отключён | Максимальное количество открытых подключений к базе данных для сервиса seclog (если включён). |
zakroma_storage_workers.postgresql_max_open_conns × количество шардов | 10 на worker; | Максимальное количество открытых подключений к базе данных для одного worker, умноженное на количество шардов (worker’ов). |
zakroma_storage_notification.postgresql_max_open_conns | 10; | Максимальное количество открытых подключений к базе данных для сервиса notification (если модуль включён). |
| Дополнительные подключения для Keycloak | 200, если используется | Если используется 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После расчёта максимального количества подключений необходимо установить параметрmax_connectionsв конфигурации PostgreSQL равным или превышающим рассчитанное значение.Рекомендуется добавить запас в 20-30% от рассчитанного значения для обеспечения стабильной работы системы.