Документация / Блокировки

Блокировки

Автоматический мониторинг блокировок PostgreSQL, сводные уведомления и поиск корневой блокирующей сессии в дереве.

Когда использовать

Инструмент нужен при зависших запросах, проблемах миграций, ожиданиях пользователей и lock-storm. Фоновый мониторинг помогает заметить устойчивую блокировку, даже если панель дерева блокировок не открыта.

Настройки автоматического мониторинга

Откройте настройки и в секции Общие настройте:

  • Автоматический мониторинг блокировок — включает отдельный фоновый сервис; по умолчанию мониторинг включён;
  • Интервал проверки блокировок (сек) — период опроса PostgreSQL; значение по умолчанию — 5 секунд;
  • Минимальная длительность блокировки до уведомления — отсекает кратковременные ожидания и показывает только устойчивые блокировки.

Сводное уведомление

При наличии устойчивых блокировок в левом нижнем углу основного окна появляется одно сводное уведомление. Оно показывает количество обнаруженных случаев или цепочек, обновляется при изменении их состава, не дублируется и исчезает, когда блокировок больше нет.

Уведомление визуально выделяется, если хотя бы один blocker принадлежит текущему экземпляру pgtools. Нажмите на уведомление, чтобы открыть панель с карточками всех активных блокировок. Карточки обновляются на месте — закрывать и заново открывать панель не нужно.

Карточка блокировки

Каждая карточка показывает blocker PID и длительность блокировки. Набор действий зависит от того, принадлежит ли blocker текущему экземпляру pgtools:

  • Внешняя сессия: открыть дерево блокировок или скрыть уведомление;
  • Активный cursor pgtools: закрыть cursor, перейти к его вкладке, открыть дерево блокировок или скрыть уведомление;
  • Другая активная сессия pgtools: перейти к вкладке, прервать выполнение запроса, открыть дерево блокировок или скрыть уведомление.

Cursor закрывается тем же штатным механизмом, что и кнопкой на панели результата. Чужой запрос pgtools прерывается только после явного нажатия пользователем; автоматически мониторинг сессии не завершает.

Дерево блокировок

Выберите Открыть дерево блокировок в карточке или откройте инструмент блокировок из подключения. pgtools получает сведения из PostgreSQL и строит дерево на стороне приложения. Верхний узел показывает корневую блокирующую сессию, ниже расположены ожидающие сессии и продолжения цепочки.

Проверьте PID, пользователя, базу, состояние транзакции, текст запроса и длительность ожидания. При lock-storm базовый диагностический запрос остаётся компактным, а связи между большим количеством сессий рассчитываются в приложении.

Дерево блокировок PostgreSQL в pgtools

Безопасный порядок действий

  1. Откройте карточку и дерево, найдите корневой blocker.
  2. Определите, это ожидаемая рабочая транзакция, забытый cursor, запрос в другой вкладке pgtools или внешняя сессия.
  3. Если blocker принадлежит pgtools, сначала перейдите к вкладке и проверьте контекст.
  4. Закройте ненужный cursor либо вручную прервите запрос. Внешнюю сессию завершайте только после проверки владельца и последствий отката.
  5. Убедитесь, что цепочка исчезла из сводного уведомления.

Ограничения

Мониторинг сообщает об устойчивом ожидании, но не определяет бизнес-критичность транзакции. Завершение сессии приводит к откату её незавершённой транзакции и может повлиять на пользователей или приложения. Не прерывайте blocker только по длительности — сначала изучите дерево и контекст.

Частые проблемы

Для просмотра текста запросов и полной информации о чужих сессиях могут потребоваться расширенные права PostgreSQL. Если уведомления слишком шумные, увеличьте минимальную длительность блокировки; если появляются с опозданием — уменьшите интервал проверки, учитывая частоту диагностических запросов.