Вопрос о целесообразности включения режима отладки на рабочем (промышленном) сервере 1С является предметом давних споров среди системных администраторов и разработчиков. С одной стороны, отладка на «живых» данных позволяет максимально быстро найти причину ошибки, с другой — существует риск замедления работы системы для всех пользователей. В этой статье мы детально разберем, как именно этот режим влияет на работу сервера, какие технические процессы при этом запускаются и каковы официальные рекомендации фирмы 1С.
Прежде всего, проанализируем ситуацию с точки зрения документации. Фирма 1С в руководстве администратора четко указывает, что в отладочном режиме работа сервера претерпевает изменения. Рассмотрим ключевые моменты:
-debug на реальных рабочих базах с большим количеством пользователей.Рассмотрим фактические данные, полученные в результате тестов. В сообществе часто ссылаются на тесты профессиональных экспертов (например, тест Гилева). Согласно различным замерам, показатели производительности распределяются следующим образом:
Выясним причину, по которой сервер начинает работать медленнее. Когда мы запускаем службу ragent.exe с флагом -debug, интерпретатор кода 1С начинает выполнять колоссальный объем дополнительной невидимой работы:
1. Постоянная проверка точек останова. Перед выполнением каждой строки кода сервер должен проверить, не установлена ли на ней точка останова (breakpoint). Для этого он сверяется с таблицей активных отладочных сессий.
2. Сериализация данных. Чтобы вы могли увидеть значения переменных в конфигураторе, сервер должен преобразовать внутренние объекты 1С в формат, пригодный для передачи по сети. Даже если в данный момент никто не подключен отладчиком, механизмы подготовки данных частично остаются активными, потребляя ресурсы CPU и памяти.
3. Передача контекста. При вызове процедур на сервере формируется стек вызовов. В режиме отладки сервер хранит и передает гораздо более детальную информацию о контексте выполнения, что нагружает шину данных.
Самое опасное в использовании отладки на «проде» — это не общее замедление, а риск критической остановки бизнес-процессов. Разберем ситуацию подробнее:
Если программист установил точку останова и сервер «замер» на ней, транзакция, начатая в этом коде, остается открытой. В этот момент в СУБД (например, MS SQL Server или PostgreSQL) удерживаются блокировки на таблицы. Другие пользователи, пытающиеся записать документы в те же таблицы, будут стоять в очереди и в итоге получат ошибку «Превышено время ожидания блокировки». Для оперативного выявления и устранения таких зависаний можно использовать консоль управления блокировками и процессами 1С и СУБД.
Также стоит учитывать стабильность соединения. Рассмотрим подробнее два протокола отладки:
1560–1591. Очень чувствительна к качеству сети. Если у программиста моргнет интернет во время сеанса отладки, рабочий процесс rphost может зависнуть в состоянии ожидания, продолжая удерживать ресурсы сервера.Если вы все же решили проверить работу сервера в этом режиме, проанализируем, как это сделать правильно. В ОС Windows это обычно делается через реестр или редактирование параметров службы.
Пример строки запуска службы с поддержкой отладки (традиционный TCP):
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Для включения более современной HTTP-отладки строка будет выглядеть иначе:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
Чтобы не подвергать риску работу предприятия, мы рекомендуем придерживаться следующих правил:
SQL-бэкап рабочей базы, развернуть его на тестовом сервере и проводить отладку там. Это полностью исключает влияние на пользователей.Хранилище для синхронизации кода. Разрабатывайте и отлаживайте на локальных копиях, а на «прод» вносите только проверенные изменения.-debug только на время проведения работ (например, в ночное время) и обязательно отключайте его после завершения, перезапуская службу 1С.функциональных опций и профилей безопасности.Подведем итог: Режим отладки — это мощный инструмент разработки, но на рабочем сервере он является «миной замедленного действия». Несмотря на то, что чистое замедление может составлять всего 1.5–5%, риски возникновения транзакционных блокировок и зависания рабочих процессов делают его использование на постоянной основе крайне нежелательным.