10
Семплирование ожиданий
Когда процесс ожидает чего-либо,
этот факт отражается в представлении pg_stat_activity
wait_event_type — тип ожидания
wait_event — имя конкретного ожидания
Информация может быть неполна
охвачены не все места в коде, в которых могут быть ожидания
Информация только на текущий момент
единственный способ получить картину во времени — семплирование
достоверная картина только при большом числе измерений
Для мониторинга ожиданий используется представление
pg_stat_activity. Когда процесс (системный или обслуживающий) не
может выполнять свою работу и ждет чего-либо, это ожидание можно
увидеть в представлении. Столбец wait_event_type показывает тип
ожидания, а столбец wait_event — имя конкретного ожидания.
Следует учитывать, что представление показывает только те ожидания,
которые соответствующим образом обрабатываются в исходном коде.
Если представление не показывает ожидание, это вообще говоря не
означает со 100-процентной вероятностью, что процесс действительно
ничего не ждет.
К сожалению, единственная доступная информация об ожиданиях —
информация на текущий момент. Никакой накопленной статистики не
ведется. Единственный способ получить картину ожиданий во
времени — семплирование состояния представления с определенным
интервалом. Встроенных средств для этого не предусмотрено, но
можно использовать расширения, например, pg_wait_sampling.
При семплировании надо учитывать его вероятностный характер.
Чтобы получить более или менее достоверную картину, число
измерений должно быть достаточно высоко. Поэтому семплирование
с низкой частотой не даст достоверной картины, а повышение частоты
приводит к увеличению накладных расходов. По той же причине
семплирование бесполезно для анализа короткоживущих сеансов.