Как устранить высокую нагрузку на диск от процесса wbengine и MS SQL Server в связке с 1С:Предприятие

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При совместном размещении сервера 1С:Предприятия и СУБД Microsoft SQL Server на одной физической машине дисковая подсистема становится критически важным узлом. Когда пользователи начинают жаловаться на замедление работы системы, в диспетчере задач нередко обнаруживаются системные процессы, создающие пиковую нагрузку на чтение и запись. Разберем по шагам, почему процесс wbengine перегружает диски, как правильно управлять архивацией Windows и как выяснить, какая база данных нагружает SQL Server при отсутствии активных пользователей.

Анализ процесса wbengine и отключение резервного копирования Windows

Процесс wbengine.exe представляет собой службу подсистемы архивации Windows Server (Windows Server Backup Engine). Данная служба активируется планировщиком задач Windows или вручную для создания теневых копий томов (VSS) и создания полных резервных копий состояния системы и дисков. При создании бэкапа дисковые накопители подвергаются интенсивным операциям блочного чтения и записи, что приводит к возникновению очередей к диску и зависанию сеансов 1С.

Проанализируем порядок действий для устранения конфликта с wbengine:

  1. Проверка расписания в оснастке архивации: откроем консоль «Система архивации данных Windows Server» (wbadmin.msc) и проверим текущее расписание создания резервных копий. Выясним, перекрывает ли график архивации рабочие часы пользователей 1С.
  2. Проверка заданий Планировщика задач: развернем ветку Библиотека планировщика заданий -> Microsoft -> Windows -> Backup. Если создание образов дисков средствами ОС более не требуется (например, настроено стороннее резервное копирование на уровне СУБД или гипервизора), отключим соответствующее регламентное задание.
  3. Отключение службы архивации: откроем консоль управления службами (services.msc), найдем службу «Служба архивации данных Windows Server» (Block Level Backup Engine Service), изменим тип запуска на Вручную или Отключена и остановим выполняющийся процесс.

Как определить базу данных, нагружающую MS SQL Server в нерабочее время

Часто возникает ситуация, когда после завершения процесса архивации служба sqlservr.exe продолжает интенсивно нагружать дисковую подсистему операциями чтения и записи, даже если все пользователи отключились от баз 1С. Выясним причину и локализуем источник нагрузки средствами SQL Server Management Studio (SSMS).

Разберем способы поиска базы и конкретных операций:

  1. Анализ планов обслуживания (Maintenance Plans): в среде SSMS проверим узел Management -> Maintenance Plans. В нерабочее время часто запускаются регламентные задачи СУБД: перестроение индексов (ALTER INDEX REBUILD), обновление статистики, проверка целостности (DBCC CHECKDB) или резервное копирование баз данных.
  2. Диагностика ввода-вывода через динамические административные представления (DMV): выполним системный запрос к представлению sys.dm_io_virtual_file_stats, чтобы увидеть суммарную статистику дисковых операций в разрезе каждого файла данных (.mdf) и журнала транзакций (.ldf):

SELECT 
    DB_NAME(vfs.database_id) AS DatabaseName,
    mf.name AS LogicalFileName,
    mf.type_desc AS FileType,
    vfs.num_of_reads,
    vfs.num_of_bytes_read,
    vfs.num_of_writes,
    vfs.num_of_bytes_written,
    vfs.io_stall_read_ms,
    vfs.io_stall_write_ms
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf 
    ON vfs.database_id = mf.database_id AND vfs.file_id = mf.file_id
ORDER BY (vfs.num_of_bytes_read + vfs.num_of_bytes_written) DESC;
  1. Поиск активных сессий и тяжелых запросов: чтобы узнать, какой SQL-код выполняется на сервере прямо сейчас, проанализируем текущие запросы с помощью представлений sys.dm_exec_requests и sys.dm_exec_sql_text:

SELECT 
    r.session_id,
    DB_NAME(r.database_id) AS DatabaseName,
    r.status,
    r.command,
    r.cpu_time,
    r.total_elapsed_time,
    r.reads,
    r.writes,
    r.logical_reads,
    t.text AS ExecutingSQL
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.session_id != @@SPID;

Контроль регламентных заданий на стороне 1С:Предприятия

Если в СУБД не запущены планы обслуживания, дисковую активность могут вызывать фоновые и регламентные задания самой платформы 1С. Даже при закрытых сеансах пользователей кластер серверов 1С продолжает выполнять запланированные процедуры.

Проверим следующие ключевые задачи:

  1. Слияние индексов полнотекстового поиска: регламентные задания ОбновлениеИндексаППД и СлияниеИндексовППД при большом объеме измененных данных создают существенную нагрузку на диск.
  2. Пересчет итогов регистров: процедура актуализации итогов регистров накопления и бухгалтерии выполняет массовые операции чтения и записи.
  3. Загрузка данных и закрытие месяца: фоновые обмены, синхронизация с внешними базами или регламентное закрытие периодов в базах конфигураций.

Для управления этими процессами откроем базу в режиме 1С:Предприятие и воспользуемся типовой обработкой Консоль регламентных заданий или формой администрирования регламентных заданий в разделе администрирования. При необходимости скорректируем расписание их запуска, чтобы разнести тяжелые задачи по времени.

Рекомендации по оптимизации совместной работы 1С и SQL Server

Рассмотрим технические настройки, позволяющие избежать дисковых задержек:

  1. Ограничение максимального объема памяти SQL Server: по умолчанию СУБД захватывает всю доступную память, вытесняя рабочие процессы 1С (rphost, rmngr) в файл подкачки Windows, что резко увеличивает дисковый I/O. Настроим параметр Max Server Memory в свойствах сервера SQL так, чтобы оставить достаточный объем памяти (от 4 до 8 Гб и более) для ОС и процессов 1С.
  2. Настройка автоувеличения файлов (Autogrowth): установим фиксированный шаг автоувеличения файлов данных (например, 256–512 МБ) вместо прироста в процентах. Это защитит от постоянной фрагментации диска и длительных пауз на расширение.
  3. Включение мгновенной инициализации файлов (Instant File Initialization): предоставим учетной записи службы SQL Server локальное право Windows Выполнение задач по обслуживанию тома (Perform volume maintenance tasks). Это избавит систему от необходимости занулять выделяемое дисковое пространство при росте файлов .mdf.
  4. Разделение баз по физическим дискам: для исключения взаимных блокировок ввода-вывода разместим операционную систему, файлы баз 1С (.mdf), журналы транзакций (.ldf) и системную базу tempdb на раздельных физических накопителях или RAID-массивах.
← На главную