Администрирование · 13 мин
Как узнать, что грузит 1С: пошаговая диагностика
Практическая инструкция, как узнать, что грузит 1С: диспетчер задач, журнал регистрации, замеры производительности, типичные причины тормозов и способы их устранения.
Когда 1С «тормозит», пользователи обычно описывают проблему расплывчато: «всё висит», «документы долго проводятся», «отчёт открывается десять минут». Однако за одинаковыми симптомами стоят совершенно разные причины: перегруженный сервер СУБД, неоптимальный запрос в конкретном отчёте, антивирус на рабочем месте или фоновое регламентное задание, которое запустилось в разгар рабочего дня. Пока вы не определите, какой именно компонент создаёт нагрузку, любые попытки «ускорить» систему будут стрельбой вслепую.
Диагностика строится по принципу «от простого к сложному»: сначала смотрим, какой процесс потребляет ресурсы, затем определяем, какой сеанс и какая операция этот процесс породили, и только потом ищем конкретный запрос или фрагмент кода. Такой порядок исключает лишнюю работу: нет смысла разбирать запросы, если процессор сервера занят антивирусным сканированием.
Ниже описан практический маршрут диагностики, который подходит и для файловых баз, и для клиент-серверных установок на 1С:Предприятии 8.3 с MS SQL Server или PostgreSQL. Большинство шагов можно выполнить штатными средствами без покупки дополнительного ПО.
Шаг 1. Определите, где именно проявляется проблема
Первый вопрос диагностики: тормозит у всех пользователей или только у одного? Если медленно работает только один компьютер, а остальные работают нормально, искать проблему нужно на этом рабочем месте: загрузка процессора и диска, антивирус, сетевое подключение, устаревший клиент 1С. Если страдают все — проблема на сервере или в самой базе.
Второй вопрос: тормозит всё или конкретная операция? Если медленно открываются все формы и списки, вероятны системные причины — нехватка оперативной памяти, перегруженный диск, сетевые задержки. Если «висит» только один отчёт или проведение одного вида документов — почти наверняка дело в запросах или коде этой операции, и серверные ресурсы тут ни при чём.
Третий признак — время проявления. Если система деградирует в одни и те же часы, проверьте расписание регламентных заданий, резервного копирования и обменов данными. Нагрузка, появляющаяся «сама по себе» в фиксированное время, почти всегда связана с фоновыми процессами.
Как выбрать направление диагностики
Шаг 2. Посмотрите, какой процесс потребляет ресурсы
Откройте диспетчер задач Windows на сервере (вкладка «Подробности») и отсортируйте процессы по загрузке процессора и памяти. В клиент-серверной архитектуре ключевые процессы: rphost — рабочие процессы сервера 1С, исполняющие код конфигурации; ragent — агент кластера; sqlservr.exe (MS SQL) или postgres — сервер СУБД. В файловом варианте вся нагрузка ложится на клиентский процесс 1cv8.exe или 1cv8c.exe.
Интерпретация простая. Если ресурсы ест rphost — нагрузку создаёт исполнение кода 1С: тяжёлые обработки, циклы, серверные вызовы. Если грузит процесс СУБД — проблема в запросах к базе: долгие выборки, отсутствие индексов, блокировки. Если процессор и память свободны, но диск загружен на 100% — узкое место в дисковой подсистеме, и усиление процессора ничего не даст.
Для более детальной картины используйте системный монитор Windows (perfmon): счётчики загрузки процессора, очереди диска, доступной памяти. Дисковая очередь, стабильно превышающая 2–3 на физический диск, — надёжный признак того, что диск не справляется с нагрузкой от базы данных.
Смотрите консоль кластера: какие сеансы активны и что выполняют
Проверяйте активные запросы в СУБД и план запроса
Проверяйте очередь диска, размещение базы и журнала транзакций
Ищите взаимоблокировки и проверяйте сеть между серверами
Шаг 3. Найдите виновный сеанс через консоль кластера
В клиент-серверном варианте откройте консоль администрирования серверов 1С, перейдите в раздел «Сеансы» вашей информационной базы. Здесь видно, кто подключён, как долго длится текущий вызов сервера, сколько памяти потребляет сеанс и какой объём данных прочитан и записан. Сеанс с аномально большим временем текущего вызова или огромным количеством прочитанных записей — главный подозреваемый.
Полезные колонки: «Время вызова СУБД (текущее)», «Прочитано (текущее)», «Записано (текущее)», «Память (текущая)». Если у одного сеанса текущее чтение исчисляется гигабайтами — этот сеанс и есть источник нагрузки. По имени пользователя и приложению можно понять, кто и какую операцию запустил, и связаться с ним до принятия мер.
Шаг 4. Включите журнал регистрации и технологический журнал
Журнал регистрации (Администрирование → Обслуживание → Журнал регистрации) показывает, какие действия выполнялись в базе: проведение документов, запуск обработок, ошибки, фоновые задания. Отфильтруйте события по времени, когда наблюдались тормоза, — часто обнаруживается, что именно в этот момент стартовал массовый обмен или тяжёлая обработка.
Для глубокой диагностики используется технологический журнал (ТЖ) — он настраивается конфигурационным файлом logcfg.xml в каталоге conf сервера 1С. ТЖ фиксирует все запросы к СУБД с длительностью, события блокировок (TLOCK, TDEADLOCK), длительные вызовы. Это главный инструмент, когда нужно найти конкретный медленный запрос.
<config xmlns="http://v8.1c.ru/v8/tech-log"><log location="C:\1clogs" history="24"><event><eq property="name" value="DBMSSQL"/></event><event><eq property="name" value="TLOCK"/></event><event><eq property="name" value="TDEADLOCK"/></event><property name="all"/></log></config>Пример выше включает запись всех запросов к MS SQL и событий блокировок в каталог C:\1clogs с хранением 24 часа. События с большим значением Duration — ваши медленные запросы; рядом в ТЖ лежит контекст: имя пользователя, сеанс, фрагмент кода конфигурации.
Шаг 5. Сделайте замер производительности конкретной операции
Если тормозит конкретный отчёт или документ, воспользуйтесь встроенным механизмом «Замер производительности» (в режиме предприятия: кнопка меню → Возможности → Замер производительности; в конфигураторе — Отладка → Замер производительности). Запустите замер, выполните медленную операцию один раз, остановите замер.
Результат покажет дерево вызовов с временем исполнения каждой строки кода и каждого запроса. Вы увидите, какая именно процедура или какой запрос занимает 90% времени. Это самый быстрый способ локализовать проблему внутри конфигурации без анализа технологического журнала.
Обратите внимание на колонку количества вызовов: если одна и та же строка кода вызвана тысячи раз, вероятен классический дефект «запрос в цикле» — запрос выполняется внутри перебора строк вместо одной выборки. Такие места дают максимальный эффект при оптимизации.
- 1Откройте базу под пользователем с правами на замер, запустите «Замер производительности»
- 2Выполните проблемную операцию один раз в типичных условиях
- 3Остановите замер и отсортируйте строки по времени исполнения
- 4Найдите строки с максимальным временем и аномальным числом вызовов
- 5Передайте найденный фрагмент разработчику или проанализируйте запрос самостоятельно
Шаг 6. Проверьте регламентные задания, блокировки и СУБД
Регламентные и фоновые задания — частый скрытый источник нагрузки. Откройте консоль заданий (в типовых конфигурациях: Администрирование → Обслуживание → Регламентные операции) и сопоставьте расписание с периодами тормозов. Обмены данными, расчёт итогов, полнотекстовое индексирование и загрузка курсов валют могут запускаться каждые несколько минут и конкурировать с пользователями за ресурсы.
Блокировки проявляются иначе, чем нехватка ресурсов: сервер почти простаивает, а пользователи «висят» в ожидании. В MS SQL активные блокировки видны через Activity Monitor или запросом к sys.dm_tran_locks; в 1С — через события TLOCK и TDEADLOCK технологического журнала. Типичные источники: проведение больших документов, одновременная запись в одни регистры, длительные транзакции в коде.
На стороне СУБД проверьте базовую гигиену: актуальность статистики, наличие планового обслуживания (перестроение индексов), размер и рост журнала транзакций, размещение tempdb. Запросы, которые раньше работали быстро, могут деградировать из-за устаревшей статистики — сервер начинает выбирать неудачный план выполнения.
Типичные причины нагрузки и как их подтвердить
Опыт диагностики показывает, что большинство случаев сводится к ограниченному набору причин. Подтверждать каждую нужно своим инструментом, а не по косвенным признакам.
| Причина | Признак | Как подтвердить |
|---|---|---|
| Запрос в цикле | Медленно работает одна операция | Замер производительности: тысячи вызовов одной строки |
| Отсутствие индекса | Отчёт по большой таблице тормозит | ТЖ: долгий DBMSSQL с полным сканированием таблицы |
| Блокировки | Сервер свободен, пользователи ждут | События TLOCK/TDEADLOCK, Activity Monitor |
| Регламентные задания | Тормоза в одно и то же время | Журнал регистрации, консоль заданий |
| Антивирус на клиенте | Тормозит одно рабочее место | Диспетчер задач: нагрузка от процесса антивируса |
| Нехватка памяти на сервере | Общая деградация, подкачка | Perfmon: доступная память, файл подкачки |
Как проверить, что проблема решена
После устранения найденной причины обязательно выполните контрольный замер той же операции в сопоставимых условиях. Сравните время выполнения до и после: улучшение должно быть кратным, а не в пределах погрешности. Если документ проводился 40 секунд, а стал проводиться за 3 — причина устранена; если стало 35 секунд — вы убрали не главный фактор.
Дополнительно понаблюдайте за сервером в часы пиковой нагрузки в течение нескольких дней: загрузка процессора, диска, очередь блокировок. Проблема считается закрытой, когда поведение системы стабильно и жалобы пользователей прекратились.
Как проверить результат
Сократилось в разы при повторном замере
Изменилось незначительно или выросло
CPU и диск имеют запас, нет очереди диска
Диск на 100%, память на исходе
В ТЖ нет массовых TLOCK и взаимоблокировок
Регулярные TDEADLOCK, пользователи ждут освобождения ресурсов
Обращений о тормозах нет несколько дней
Жалобы продолжаются в те же периоды
Что важно запомнить
Диагностика нагрузки в 1С идёт по цепочке: локализация (все или один, всё или одна операция) → процесс-виновник (rphost, СУБД, диск) → виновный сеанс в консоли кластера → конкретный запрос или код через технологический журнал и замер производительности. Не меняйте железо и код до тех пор, пока причина не подтверждена замером.
Частые вопросы
1С тормозит, но сервер почти не загружен. Что это значит?
Чаще всего это блокировки: сеансы ждут освобождения данных, захваченных другими сеансами, и ресурсы при этом не потребляются. Проверьте события TLOCK и TDEADLOCK в технологическом журнале и активные блокировки в СУБД. Вторая возможная причина — сетевые задержки между клиентом и сервером, особенно при работе через Wi-Fi или удалённый канал.
Как узнать, кто из пользователей грузит базу прямо сейчас?
Откройте консоль кластера серверов 1С, раздел «Сеансы», и отсортируйте по колонкам «Время вызова СУБД (текущее)», «Прочитано (текущее)» и «Память (текущая)». Сеанс с аномально большими значениями — источник нагрузки. По имени пользователя и типу приложения видно, кто это и что он запустил.
Поможет ли увеличение оперативной памяти серверу?
Только если нехватка памяти подтверждена: малый объём доступной памяти, активное использование файла подкачки, частые обращения к диску. Если узкое место — медленные запросы или блокировки, добавление памяти эффекта не даст. Сначала снимите показания системного монитора в часы пик.
Чем файловый вариант отличается в диагностике?
В файловом варианте нет кластера и отдельной СУБД: вся работа идёт в клиентском процессе, а файл базы читается по сети. Основные причины тормозов — медленная сеть до файлового ресурса, антивирус на сервере с файлом, большой размер файла 1Cv8.1CD. Инструменты: диспетчер задач, замер производительности, журнал регистрации.
Можно ли найти медленный запрос без технологического журнала?
Да, если проблема воспроизводится в конкретной операции: используйте замер производительности — он покажет запросы и их время без настройки ТЖ. Технологический журнал нужен, когда проблема плавающая, возникает у разных пользователей и её нельзя воспроизвести по команде.
Когда стоит привлекать специалиста по оптимизации?
Если замер показал проблему в запросах или коде типовой конфигурации, если обнаружены систематические взаимоблокировки или если нагрузка упирается в архитектуру (объёмы данных, число пользователей). Самостоятельно разумно ограничиться сбором диагностики: замеры и выгрузки ТЖ сильно сократят время и стоимость работы специалиста.