Ошибка ограничения подключений PostgreSQL
Содержание
Описание проблемыКорневая причинаПоиск и устранение неисправностейРешениеВариант 1 — Увеличение возможностей PostgreSQLВариант 2 — Настройка пула базы данных HarborШаг 1 — Измените CR с новыми значениямиШаг 2 — Проверьте, что настройки применилисьШаг 3 — Проверьте стабильную работу HarborОписание проблемы
В логах компонентов Harbor (например, core, jobservice) отображаются ошибки базы данных, такие как:
Корневая причина
Harbor открыл больше одновременных подключений к PostgreSQL, чем разрешено базой данных (превышено значение max_connections в PostgreSQL).
Поиск и устранение неисправностей
Проверьте логи развертывания Harbor Core. Убедитесь, что присутствует сообщение об ошибке pq: sorry, too many clients already.
Решение
У вас есть два варианта изменений — выберите один или оба в зависимости от вашей диагностики.
Определите, слишком ли низко максимальное значение PG или слишком высок пул подключений Harbor на один Pod для вашего количества реплик, затем отрегулируйте значения. После внесения изменений пиковое количество подключений Harbor должно оставаться ниже лимита PG.
Вариант 1 — Увеличение возможностей PostgreSQL
Если значение max_connections в PostgreSQL слишком низкое для вашего масштаба Harbor, увеличьте его на стороне PostgreSQL. Конкретные шаги зависят от способа управления PG и выходят за рамки данной инструкции.
Вы можете использовать следующую команду для проверки возможностей PostgreSQL и текущего использования:
Вариант 2 — Настройка пула базы данных Harbor
Если Harbor открывает слишком много подключений, уменьшите настройки пула Harbor. Помните:
database.maxOpenConnsприменяется на каждый Pod (каждый экземпляр компонента Harbor); увеличение количества реплик увеличивает общее потенциальное количество подключений.- При изменении
maxOpenConnsпроверьтеmaxIdleConns, чтобы оно оставалось разумным (обычно ≤maxOpenConns).
Шаг 1 — Измените CR с новыми значениями
Замените <NAME> на имя вашего Harbor CR и <NAMESPACE> на namespace вашего Harbor CR.
Замените <MAX_OPEN_CONNS> и <MAX_IDLE_CONNS> на желаемые значения.
Шаг 2 — Проверьте, что настройки применились
Проверьте, что сгенерированная конфигурация отражает новые значения.
Вывод должен выглядеть так, значение должно быть таким же, как указано в команде patch:
Шаг 3 — Проверьте стабильную работу Harbor
После внесения изменений пиковое количество подключений Harbor должно оставаться ниже лимита PG.