pgbouncer - кластер auroraDB некорректно распределяет нагрузку - PullRequest
0 голосов
/ 09 мая 2019

Я использую кластер AuroraDB с 2 считывателями и pgBouncer для поддержки пула соединений.

Мое приложение очень интенсивно читает и запускает множество запросов на выборку.

проблема, с которой я сталкиваюсьмои 2 реплики чтения не используются полностью параллельно.

Я вижу тенденции, когда все подключения перемещаются в 1 реплику, где другая реплика обслуживает 0 подключений, и через некоторое время ситуация меняется, когда 2-я реплика обслуживает все подключения, а 1-я обслуживает 0.

Я исследовал это и обнаружил, что балансировка нагрузки кластера auroraDB выполняется с помощью отрезания времени с интервалом в 1 секунду.

Я предполагаю, что когда pgBouncer создает пул соединений, все соединения создаются в течение 1 секунды, а все соединения заканчиваются на 1прочитайте реплику.

есть ли способ исправить это?

1 Ответ

0 голосов
/ 26 мая 2019

Конечной точкой БД является DNS-адрес маршрута 53, и распределение нагрузки выполняется в основном через циклический перебор DNS, каждый раз, когда вы разрешаете DNS.Когда вы используете pgBouncer, он разрешает DNS один раз и пытается открыть соединение с разрешенным IP?Если да, то ожидается, что все ваши соединения будут разрешены к одному и тому же экземпляру.Вы можете исправить это концептуально несколькими способами (я не слишком знаком с pgBouncer), но вам нужно как-то заставить библиотеку разрешать DNS явно для каждого соединения или явно добавлять все конечные точки экземпляра в конфигурацию.Последнее не рекомендуется, если вы планируете выпускать записи с использованием этого пула подключений.У вас нет никакого контроля над тем, кто остается автором, поэтому вы можете непреднамеренно отправить свои записи в реплику.

Балансировка нагрузки кластера AuroraDB выполняется с помощью отрезания времени по 1-секундным интервалам. Я не слишком уверен, где вы это читаете.Не могли бы вы поделиться некоторыми ссылками?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...