В процессе эксплуатации 1С:Розница на базе PostgreSQL администраторы нередко сталкиваются с ситуацией, когда пользователи жалуются на невозможность проведения документов из-за конфликтов блокировок. Чаще всего это происходит, когда сеанс «зависает» в ожидании ресурсов, а пользователь, не дождавшись отклика, запускает новую копию программы. Разберем по шагам, как выявить такие сеансы и навести порядок в работе системы.
Первым делом проанализируем активность в консоли Администрирование кластера серверов. Этот инструмент позволяет увидеть, что именно делает пользователь в текущий момент.
В современных конфигурациях 1С активно используется Библиотека стандартных подсистем (БСП). В ней предусмотрен механизм анализа блокировок. Функция ИнформацияОБлокирующихСеансах позволяет получить данные о том, какой пользователь и какой процесс удерживают блокировку.
Важно помнить, что стандартные функции БСП «из коробки» могут быть ориентированы на файловый вариант или специфические регистры, однако их можно адаптировать для получения данных из таблиц блокировок СУБД pg_locks. Это позволит создать собственные отчеты или уведомления для администратора.
Если штатных средств недостаточно, обратимся к уровню базы данных. PostgreSQL предоставляет мощные представления для анализа:
pg_stat_activity — показывает текущие активные запросы, их длительность и состояние.pg_locks — позволяет увидеть дерево зависимостей, кто кого блокирует в текущий момент.Разберем пример запроса, который поможет увидеть блокирующие сеансы:
SELECT pid, usename, state, query_start, query
FROM pg_stat_activity
WHERE state != 'idle'
AND now() - query_start > interval '10 minutes';
Этот запрос выведет список всех запросов, которые выполняются дольше 10 минут, что является первым признаком потенциально «зависшего» процесса.
Частая ошибка — борьба с последствиями (убивание сеансов) вместо устранения причин. Рассмотрим, как минимизировать конфликты:
Поступление товаров вызывает блокировки, проанализируйте, нет ли в модуле проведения избыточных записей в регистры или тяжелых запросов к одним и тем же ресурсам.rac. Это позволит «очищать» базу перед началом рабочего дня или по расписанию, но не должно заменять анализ причин зависания.Помните, что постоянное принудительное завершение сеансов пользователями — это сигнал о том, что система требует оптимизации. Начните с анализа Технологического журнала, чтобы найти конкретные события TLOCK, указывающие на ожидание блокировок. Совместная работа системного администратора и разработчика 1С по анализу этих данных — наиболее эффективный путь к стабильной работе вашей учетной системы.