При работе с платформой 1С:Предприятие 8.3, особенно в больших и нагруженных системах, пользователи могут столкнуться с ситуацией, когда после перезапуска службы агента сервера (ragent) выполнение отчетов, которые ранее занимали считанные секунды, начинает отнимать несколько минут. Эта проблема усугубляется тем, что стандартные средства замера производительности в конфигураторе могут показывать нормальное время выполнения, что вводит в заблуждение.
Рассмотрим подробнее данную проблему, проанализируем её возможные причины и предложим комплексные решения для её диагностики и устранения.
Суть проблемы:
Пользователи сообщают, что после перезапуска службы ragent (например, после ночного обслуживания сервера) и последующего переподключения клиентских сеансов, формируются те же самые отчеты, которые до перезапуска выполнялись за 3 секунды, но теперь их выполнение занимает 3 минуты и 3 секунды. При этом замер производительности в конфигураторе показывает, что чистое время выполнения кода отчета составляет всего 1.5 секунды, что противоречит наблюдаемому замедлению.
Важный диагностический признак: запуск клиентского приложения 1С с параметром /РежимОтладки полностью устраняет проблему, и отчеты вновь формируются быстро (за 2-4 секунды). Это указывает на то, что причина кроется в механизмах, которые активно работают в обычном режиме, но отключаются или ведут себя иначе в режиме отладки.
Мы выясним, где может скрываться "тормознутый" код, и как эффективно диагностировать и решать подобные проблемы.
Одной из наиболее частых и трудноуловимых причин необъяснимых задержек в работе 1С являются попытки платформы или конфигурации соединиться с различными внешними интернет-сервисами. После перезапуска ragent и переподключения клиентских сеансов, система может инициировать целый ряд фоновых проверок, синхронизаций или обновлений данных, требующих доступа к интернету.
Почему это происходит?
Современные конфигурации 1С активно интегрированы с множеством онлайн-сервисов для повышения функциональности и удобства. К таким сервисам относятся:
1С:Обновление программ), обращение к порталу 1С:ИТС для проверки лицензионности, получения новостей или актуальных данных.СПАРК Риски или другие интеграции, могут выполнять фоновую проверку благонадежности контрагентов.classifier-repository.1c.ru).ФинОтчетностьВБанкиСлужебныйКлиент.ПолучитьИнформациюОВходящихТранзакцияхОтБанков.login.1c.ru), проверка токенов авторизации (упоминалось ИнтерфейсАвторизацииИСМПКлиент.ВыполнитьОбновлениеНастроекОтветственногоЗаАктуализациюТокеновАвторизации).Проблема значительно усугубляется, если доступ к этим внешним ресурсам с сервера 1С ограничен, нестабилен или вовсе отсутствует. В таких случаях система пытается установить соединение и ожидает ответа в течение установленного таймаута, который часто составляет от 30 до 60 секунд. Если подобных обращений несколько (например, три по 60 секунд), общая задержка может легко достигать нескольких минут, что идеально соответствует описанной ситуации (дополнительные 3 минуты).
Как диагностировать обращения к внешним ресурсам:
Для точного определения того, какие процессы rphost.exe обращаются к внешним сетевым адресам и вызывают задержки, мы можем использовать системные утилиты:
TCPView (Windows Sysinternals): Запустим TCPView на сервере 1С. В момент формирования "тормозящего" отчета внимательно отслеживайте все исходящие сетевые соединения от процессов rphost.exe. Мы увидим IP-адреса и порты, к которым пытается подключиться система. Это поможет выявить внешние ресурсы.Wireshark: Более мощный инструмент для анализа сетевого трафика. Запустите захват трафика на сетевом интерфейсе сервера 1С. Отфильтруйте трафик по процессам rphost.exe и анализируйте попытки установки TCP-соединений (SYN/ACK). Мы сможем увидеть запросы, которые долго не получают ответа или приводят к повторным попыткам.Поиск проблемного кода в конфигурации:
После выявления подозрительных внешних адресов, мы можем попытаться найти соответствующие обращения в коде конфигурации:
http://, https://), доменные имена, идентифицированные с помощью сетевых утилит, или ключевые слова, связанные с интернет-соединениями.HTTPСоединениеWSОпределение, WSПроксиFTPСоединениеПолучитьФайлИзИнтернетаЗагрузитьИзИнтернетаИнтернетПочтовыйПрофильПроверкаОбновлений, ЗагрузкаКурсовВалют, АктуализацияКлассификаторов).Как решить проблему с внешними запросами:
Перезапуск службы ragent, хотя и выглядит как "чистый старт", не всегда полностью очищает все виды кеша, которые могут влиять на производительность. Некорректный или неоптимальный кеш может значительно замедлять работу системы, даже если сам код отчета выполняется быстро.
Почему это происходит?
rphost). Если этот кеш по какой-то причине стал некорректным или устаревшим после перезапуска ragent, система может тратить время на его перестроение или использовать неоптимальные данные, что приводит к замедлениям.Как диагностировать и решить проблемы с кешированием:
Мы можем принудительно очистить кеш на сервере 1С. Для этого:
rphost.exe (например, через оснастку "Администрирование серверов 1С:Предприятия" или перезапуском службы 1C:Enterprise 8.3 Server Agent, если нет активных пользователей).C:\Program Files\1cv8\srvinfo или C:\Program Files\1cv8\8.3.X.XXX\bin\conf, далее в подкаталог с GUID вашего кластера).sncc. Это очистит кеш метаданных сервера.После этой процедуры система заново построит серверный кеш, что часто решает проблемы, связанные с его некорректным состоянием.
Для очистки кеша планов запросов в SQL Server мы можем использовать команду DBCC FREEPROCCACHE. Это заставит SQL Server перестроить планы запросов, используя актуальную статистику и параметры.
DBCC FREEPROCCACHE;
GO
Эту команду следует выполнять с осторожностью на продуктивных базах, так как она может кратковременно увеличить нагрузку на SQL Server за счет компиляции новых планов. Однако, при наличии проблем с производительностью, это может быть эффективным шагом. Перезапуск службы SQL Server, хотя и очищает кеш планов, является более радикальной мерой, чем просто DBCC FREEPROCCACHE, и обычно не требуется.
Технологический журнал (ТЖ) 1С:Предприятия — это мощный инструмент для диагностики производительности и ошибок. Однако, если он некорректно настроен или имеет очень большой размер, он сам может стать причиной замедлений.
Почему это происходит?
Если технологический журнал включен на сервере 1С с очень подробной детализацией (например, собирает события CALL, SDBL, DBMSSQL для всех процессов) и его размеры начинают переваливать за десятки гигабайт, дисковая подсистема сервера может не справляться с постоянной записью такого объема данных. В результате рабочие процессы rphost вынуждены ожидать завершения дисковых операций по записи в журнал, что со стороны пользователя выглядит как "зависание" или длительное выполнение операций.
Как диагностировать и решить проблему с ТЖ:
logcfg.xml:
Мы должны проверить файл настройки технологического журнала logcfg.xml, который обычно находится в каталоге conf сервера 1С (например, C:\Program Files\1cv8\8.3.X.XXX\bin\conf). Обратите внимание на следующие параметры:
<log level="5">: Уровень детализации логов. Уровень 5 (самый высокий) собирает очень много информации и может серьезно влиять на производительность. Для продуктивной системы обычно достаточно уровня 4 или даже 3.<event filter='all' enable='1'/> или конкретные <event name='CALL' enable='1'/>, <event name='SDBL' enable='1'/>). Слишком широкий набор событий приводит к большим файлам.<size limit='xxxx'>: Размер файла журнала. Убедимся, что лимит установлен адекватно и не позволяет файлам расти бесконечно.Если ТЖ был включен для отладки, но забыт, он может продолжать собирать избыточную информацию.
Посмотрим на фактический размер файлов технологического журнала, которые обычно находятся в каталоге, указанном в logcfg.xml (параметр path в элементе <log>). Если файлы имеют размер в десятки гигабайт, это явный признак того, что ТЖ может быть причиной замедлений.
Для устранения проблемы мы можем:
enable='0' для всех событий или для всего <log>.EXCP, DEADLOCK) или уменьшая уровень детализации.После изменения logcfg.xml необходимо перезапустить службу 1C:Enterprise 8.3 Server Agent, чтобы изменения вступили в силу.
Для более глубокого анализа проблемы мы можем применить следующие методы:
Многие фоновые операции и запросы к внешним ресурсам запускаются регламентными заданиями. Мы можем временно отключить все регламентные и фоновые задания, которые могут стартовать при запуске системы или подключении пользователя. Для этого:
ragent и проверим, сохранится ли проблема. Если проблема исчезнет, это укажет на то, что причина была в одном из отключенных заданий. Затем мы можем включать их по одному, чтобы выявить конкретного "виновника".Журнал регистрации 1С также может содержать полезную информацию о длительных операциях, ошибках или предупреждениях, которые совпадают по времени с замедлением отчетов. Мы можем проанализировать его, отфильтровав события по времени, когда отчеты начали "тормозить", и по критичным событиям, таким как "Ошибка" или "Предупреждение".
Хотя стандартный замер производительности в режиме отладки показал нормальные результаты, мы можем попробовать пошаговую отладку в режиме "тонкий клиент + сервер". Пользователь упоминал, что при добавлении "сервера" в предметы отладки конфигуратор вылетает. Это само по себе является признаком нестабильности платформы или конфликта. Если все же удастся запустить отладку, мы можем пошагово пройтись по коду отчета и посмотреть, на каких вызовах происходит длительное ожидание. Обратим особое внимание на вызовы, которые явно или неявно обращаются к внешним ресурсам или выполняют тяжелые запросы.
Заключение:
Проблема замедления отчетов после перезапуска службы ragent в 1С:Предприятии 8.3, скорее всего, связана с фоновыми обращениями к внешним интернет-сервисам, проблемами кеширования на сервере 1С или в SQL Server, или чрезмерной активностью технологического журнала. Комплексный подход к диагностике, включающий анализ сетевой активности, проверку настроек кеша и технологического журнала, а также временное отключение регламентных заданий, позволит нам эффективно выявить и устранить источник тормозов. Регулярный мониторинг и оптимизация этих аспектов обеспечат стабильную и быструю работу вашей системы 1С.