Что заставляет avg_wait_time pgbouncer быть> 0?

Документы описывают avg_wait_time как:

Время, затраченное клиентами на ожидание сервера в микросекундах (в среднем за секунду).

Мы видим случайные всплески в avg_wait_time (обычно это 0). Во время этих пиков, насколько я могу судить, существуют доступные / незанятые серверы. Что может быть причиной того, что время ожидания будет больше 0 в этих случаях?

1 ответ

Чтение потока из hackernoon приводит к тому, что ваши пулы соединений исчерпаны, и новые соединения должны ждать, пока не освободится свободное место для подключения к пулу или для перехода к фазе выполнения.

Эти соединения с сервером, с которыми связываются клиенты, "объединяются" - их количество ограничено и используется повторно. Из-за этого может случиться так, что в то время как клиент отправляет некоторый запрос (начало транзакции или выполнение запроса), соответствующий пул соединений с сервером исчерпан, то есть pgbouncer отклонил столько соединений, сколько ему было разрешено, и все они заняты (связаны с) некоторые другие клиенты. В этом сценарии PgBouncer помещает клиента в очередь, и соединение этого клиента переходит в состояние CL_WAITING. Это может также произойти, когда клиент только входит в систему, поэтому для этого также есть CL_WAITING_LOGIN:

Другие вопросы по тегам