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