Как отловить плавающий по времени запрос?

Есть плавающий по времени запрос.
Большее количество времени он выполняется за миллисекунды, но периодически случаются провалы до 6 секунд.
После, с параметрами которые отрабатывали 3-6 секунд, запрос выполняется с нормальной скоростью в ms

Как можно понять что происходит?

По процессору нет изменений в это время.
По дискам совсем небольшая просадка по времени.
В памяти тоже нет пиков.

Включён auto_explain, но не можем включить его на analyze уровень т.к это сильно замедлит БД.
пока не совсем понимаю за что зацепиться
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
После, с параметрами которые отрабатывали 3-6 секунд, запрос выполняется с нормальной скоростью в ms

Симптоматика медленного чтения с дисков.
Поставьте pg_stat_statements, включите track_io_timing и посмотрите в blk_read_time, blk_write_time этого запроса относительно числа вызовов и общего времени их выполнения.

PS: обратите внимание, что для СУБД критична латентность дисковой системы. Есть графики латентности io на чтение и запись?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы