Почему 1С 7.7 на SQL тормозит на новом мощном сервере и как это исправить

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

Ситуация, когда после апгрейда серверного оборудования производительность старой доброй 1С версии 7.7 не растет, а падает в несколько раз, встречается довольно часто. Казалось бы, современные процессоры с высокой частотой, десятки гигабайт оперативной памяти и быстрые SSD должны заставить систему «летать», но на практике мы сталкиваемся с задержками при проведении документов, медленной отрисовкой журналов и долгим выполнением бэкапов. Разберем подробно, почему так происходит и какие настройки необходимо выполнить, чтобы вернуть системе былую скорость.

Анализируем влияние электропитания на гипервизоре и в гостевой ОС

Одной из самых распространенных и неочевидных причин тормозов в виртуальной среде является режим энергосбережения. Проанализируем цепочку: современный процессор, такой как Intel Core i7-6800K, обладает функциями динамического изменения частоты. Если в настройках Windows или BIOS стоит «Сбалансированный» режим, процессор занижает частоту в моменты простоя или низкой нагрузки. 1С 7.7 — это практически однопоточное приложение, которое не может нагрузить все 10 или более ядер одновременно. В итоге гипервизор «думает», что нагрузка невелика, и не выводит процессор на максимальные обороты.

Важно: Настройку плана электропитания необходимо выполнить в двух местах:

  1. На физическом хосте (гипервизоре): Установим режим «Высокая производительность» в панели управления электропитанием Windows. Это заставит ядра процессора всегда работать на номинальной или турбо-частоте.
  2. Внутри виртуальной машины: Также выберем режим «Высокая производительность», чтобы планировщик гостевой ОС не пытался экономить ресурсы.

Как показала практика, только это действие может поднять общую производительность (например, по тесту Гилева) более чем в два раза — с 20 до 50 единиц.

Настройка параллелизма в SQL Server (MAXDOP)

Разберем специфику работы SQL Server с запросами от 1С 7.7. Старая платформа формирует запросы таким образом, что попытки SQL Server распараллелить их выполнение на несколько ядер процессора чаще приводят к деградации производительности и блокировкам (например, LCK_M_X), чем к ускорению.

Проверим и изменим параметр Max Degree of Parallelism (MAXDOP). Для баз данных 1С 7.7 настоятельно рекомендуется устанавливать это значение равным 1. Это гарантирует, что один запрос будет выполняться одним потоком процессора, исключая накладные расходы на синхронизацию потоков.

Чтобы изменить этот параметр, выполним следующий скрипт в SQL Management Studio:


EXEC sys.sp_configure N'show advanced options', N'1';
RECONFIGURE WITH OVERRIDE;
EXEC sys.sp_configure N'max degree of parallelism', N'1';
RECONFIGURE WITH OVERRIDE;

Если оставить значение 0 (использовать все доступные ядра), вы можете столкнуться с высокими ожиданиями типа CXPACKET, что свидетельствует о том, что потоки тратят время на ожидание друг друга.

Исследование узких мест через системные ожидания

Чтобы не гадать, почему система тормозит, проанализируем статистику ожиданий SQL Server. Это позволит точно определить, во что упирается сервер: в диски, в память или в блокировки. Воспользуемся скриптом для анализа sys.dm_os_wait_stats. Обратим особое внимание на следующие типы ожиданий:

Для мониторинга текущих задержек в реальном времени полезно использовать следующий запрос:


SELECT 
    session_id, 
    wait_type, 
    wait_time, 
    blocking_session_id, 
    text 
FROM sys.dm_exec_requests 
CROSS APPLY sys.dm_exec_sql_text(sql_handle);

Тонкая настройка виртуализации Hyper-V

Работа в виртуальной среде требует особого внимания к распределению ресурсов. Рассмотрим основные рекомендации для 1С 7.7 на Hyper-V:

  1. Статическая память: Для SQL Server крайне не рекомендуется использовать Dynamic Memory. Выделим фиксированный объем оперативной памяти (например, 32 ГБ из доступных 64 ГБ) и зафиксируем его в настройках виртуальной машины. Это предотвратит постоянные попытки гипервизора перераспределить память, что вызывает «фризы» SQL Server.
  2. Тип дисков: Используем фиксированные (Fixed) диски VHDX. Динамически расширяемые диски медленнее на операциях записи, что существенно замедляет создание бэкапов и проведение документов.
  3. Сетевой адаптер и VMQ: На некоторых сетевых картах Intel и Broadcom функция Virtual Machine Queues (VMQ) работает некорректно, вызывая лаги в RDP-сессиях и при передаче данных. Если вы наблюдаете «залипания» интерфейса, попробуйте отключить VMQ в свойствах сетевого адаптера на физическом хосте.

Обслуживание базы данных и статистика

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

Выполним полное обновление статистики для всей базы данных:

EXEC sp_updatestats;

Также проверим уровень фрагментации индексов. На новом мощном сервере 1С 7.7 часто страдает от того, что SQL Server не может эффективно использовать индексы из-за их сильной фрагментации после массового переноса данных. Рекомендуется выполнить REINDEX всех таблиц базы данных.

Особенности работы с SSD и дисковым кэшем

Проанализируем ситуацию с SSD в зеркале (RAID 1). Автор исходной темы заметил, что бэкап стал делаться в 2 раза дольше. Это может быть связано с тем, что на новом контроллере отключено кэширование записи (Write-Back Cache). Многие RAID-контроллеры отключают кэш, если не обнаруживают батарейку (BBU). Поскольку SQL Server подтверждает транзакцию только после записи в лог, отсутствие кэша контроллера на SSD может парадоксальным образом замедлить работу по сравнению со старым HDD, у которого кэш был включен.

Совет: Проверьте настройки вашего RAID-контроллера. Если безопасность данных обеспечена хорошим ИБП, включение Force Write Back может радикально ускорить запись логов и создание бэкапов.

Подводя итог, можно сказать, что «тормоза» 1С 7.7 на новом железе — это комплексная проблема настроек энергосбережения и распределения ресурсов в виртуальной среде. Последовательное выполнение описанных шагов позволит вашей системе использовать потенциал современного оборудования на полную мощность.

← На главную