Ситуация, когда после апгрейда серверного оборудования производительность старой доброй 1С версии 7.7 не растет, а падает в несколько раз, встречается довольно часто. Казалось бы, современные процессоры с высокой частотой, десятки гигабайт оперативной памяти и быстрые SSD должны заставить систему «летать», но на практике мы сталкиваемся с задержками при проведении документов, медленной отрисовкой журналов и долгим выполнением бэкапов. Разберем подробно, почему так происходит и какие настройки необходимо выполнить, чтобы вернуть системе былую скорость.
Одной из самых распространенных и неочевидных причин тормозов в виртуальной среде является режим энергосбережения. Проанализируем цепочку: современный процессор, такой как Intel Core i7-6800K, обладает функциями динамического изменения частоты. Если в настройках Windows или BIOS стоит «Сбалансированный» режим, процессор занижает частоту в моменты простоя или низкой нагрузки. 1С 7.7 — это практически однопоточное приложение, которое не может нагрузить все 10 или более ядер одновременно. В итоге гипервизор «думает», что нагрузка невелика, и не выводит процессор на максимальные обороты.
Важно: Настройку плана электропитания необходимо выполнить в двух местах:
Как показала практика, только это действие может поднять общую производительность (например, по тесту Гилева) более чем в два раза — с 20 до 50 единиц.
Разберем специфику работы 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. Обратим особое внимание на следующие типы ожиданий:
.ldf файл. Для него скорость записи (latency) критически важна.Для мониторинга текущих задержек в реальном времени полезно использовать следующий запрос:
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);
Работа в виртуальной среде требует особого внимания к распределению ресурсов. Рассмотрим основные рекомендации для 1С 7.7 на Hyper-V:
Dynamic Memory. Выделим фиксированный объем оперативной памяти (например, 32 ГБ из доступных 64 ГБ) и зафиксируем его в настройках виртуальной машины. Это предотвратит постоянные попытки гипервизора перераспределить память, что вызывает «фризы» SQL Server.VHDX. Динамически расширяемые диски медленнее на операциях записи, что существенно замедляет создание бэкапов и проведение документов.Virtual Machine Queues (VMQ) работает некорректно, вызывая лаги в RDP-сессиях и при передаче данных. Если вы наблюдаете «залипания» интерфейса, попробуйте отключить VMQ в свойствах сетевого адаптера на физическом хосте.Перенос базы на новое железо — это отличный повод выполнить полное обслуживание. Старые планы запросов, которые были эффективны на старом процессоре, могут оказаться неоптимальными для нового. Выясним, когда в последний раз обновлялась статистика.
Выполним полное обновление статистики для всей базы данных:
EXEC sp_updatestats;
Также проверим уровень фрагментации индексов. На новом мощном сервере 1С 7.7 часто страдает от того, что SQL Server не может эффективно использовать индексы из-за их сильной фрагментации после массового переноса данных. Рекомендуется выполнить REINDEX всех таблиц базы данных.
Проанализируем ситуацию с SSD в зеркале (RAID 1). Автор исходной темы заметил, что бэкап стал делаться в 2 раза дольше. Это может быть связано с тем, что на новом контроллере отключено кэширование записи (Write-Back Cache). Многие RAID-контроллеры отключают кэш, если не обнаруживают батарейку (BBU). Поскольку SQL Server подтверждает транзакцию только после записи в лог, отсутствие кэша контроллера на SSD может парадоксальным образом замедлить работу по сравнению со старым HDD, у которого кэш был включен.
Совет: Проверьте настройки вашего RAID-контроллера. Если безопасность данных обеспечена хорошим ИБП, включение Force Write Back может радикально ускорить запись логов и создание бэкапов.
Подводя итог, можно сказать, что «тормоза» 1С 7.7 на новом железе — это комплексная проблема настроек энергосбережения и распределения ресурсов в виртуальной среде. Последовательное выполнение описанных шагов позволит вашей системе использовать потенциал современного оборудования на полную мощность.