Как оптимизировать работу 1С:ЗУП на сервере с гипервизором Hyper-V и SQL Server при медленной работе?

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

При работе с информационными базами 1С, особенно такими как 1С:ЗУП с большим объемом данных (например, 30 ГБ), пользователи часто сталкиваются с критическим замедлением работы. Это может проявляться в долгом открытии справочников (например, «Сотрудники»), карточек, зависаниях при проведении или заполнении документов. Давайте вместе разберем причины таких проблем в инфраструктуре, где 1С и SQL Server разнесены на разные виртуальные машины под управлением гипервизора, и найдем пути их решения.

Проблема низкой производительности 1С:ЗУП и других баз

Когда пользователи жалуются на то, что «ЗУП висит», это является явным признаком серьезных проблем с производительностью. Такая ситуация делает работу с системой практически невозможной и требует немедленного вмешательства. Мы видим, что база 1С:ЗУП достигла размера в 30 ГБ, что само по себе не является критически большим размером, но при неправильной конфигурации может усугублять проблемы. Проблемы затрагивают не только ЗУП, но и другие базы, что указывает на системный характер сбоя.

Архитектура системы и виртуализация: зачем разделять 1С и SQL?

В вашем случае 1С:Предприятие и SQL Server работают на разных виртуальных машинах, размещенных на одном физическом гипервизоре Hyper-V. Возникает вопрос: почему именно так, и нельзя ли обойтись без гипервизора?

Разделение SQL Server и сервера приложений 1С на разные виртуальные машины — это распространенная и, как правило, рекомендуемая практика. Давайте рассмотрим ее преимущества:

  1. Гибкость управления ресурсами: Каждая виртуальная машина получает свой пул ресурсов (процессорное время, оперативная память), что позволяет более точно настроить их в зависимости от потребностей конкретного сервиса. Например, SQL Server обычно требует значительно больше оперативной памяти, чем сервер приложений 1С.
  2. Масштабируемость: В будущем, если потребуется увеличить производительность одного из компонентов, вы сможете добавить ресурсы (например, ОЗУ или виртуальные процессоры) только к нужной ВМ, не затрагивая другую.
  3. Изоляция: Проблемы на одной виртуальной машине (например, сбои ОС или конфликты приложений) меньше влияют на работу другой ВМ. Это повышает общую стабильность системы.
  4. Удобство обслуживания: Обновление операционной системы, установка патчей или перенос ВМ на другой физический сервер становится проще и безопаснее.
  5. Оптимизация лицензирования: В некоторых случаях разделение может помочь в оптимизации лицензионных расходов на ПО.

Однако, несмотря на эти преимущества, необходимо правильно распределить ресурсы между виртуальными машинами и учитывать накладные расходы, которые вносит сам гипервизор. В противном случае, необоснованное разделение может привести к снижению производительности, что, вероятно, и произошло в вашем случае.

Диагностика и первоначальные данные: с чего начинать?

Прежде чем приступать к изменениям, нам необходимо собрать максимально полную информацию о вашей системе. Мы уже знаем, что:

Критически важным шагом является запуск и анализ теста Гилева. Он позволяет оценить производительность дисковой подсистемы, процессора и памяти в контексте работы 1С. Полученные "попугаи" дают объективную картину узких мест.

Оптимизация на уровне BIOS и операционной системы

Один из ключевых факторов, существенно влияющих на производительность сервера, часто скрыт в базовых настройках — это параметры энергосбережения. Давайте рассмотрим, как их настроить.

Настройки BIOS

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

  1. Отключите энергосберегающие функции: В BIOS сервера найдите и отключите такие функции, как Intel SpeedStep, AMD Cool'n'Quiet, C-States (C1E, C3, C6, C7). Эти функции динамически изменяют частоту и напряжение процессора для экономии энергии, но могут замедлять отклик системы.
  2. Включите Turbo Boost (если доступно): Если ваш процессор поддерживает технологию Turbo Boost, убедитесь, что она включена в BIOS. Это позволит процессору временно повышать свою тактовую частоту выше номинальной при интенсивной нагрузке.
  3. Отключите Dynamic CPU Frequency Scaling: Найдите опции, связанные с динамическим масштабированием частоты CPU, и установите режим максимальной производительности.

Важно отметить, что сисадмины иногда опасаются, что отключение этих функций приведет к "износу" сервера. На самом деле, серверное оборудование спроектировано для работы в режиме высокой нагрузки. Использование его на полную мощность для критически важного бизнес-приложения, такого как 1С, является нормой, а не "износом".

Настройки операционной системы виртуальных машин

После настройки BIOS необходимо убедиться, что операционные системы виртуальных машин также настроены на максимальную производительность.

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

Важность процессора для 1С

В нашем случае используются два процессора Intel Xeon E5-2637, каждый с 8 ядрами. Это мощное решение. Однако, если энергосберегающие функции включены, процессор может работать на значительно сниженной частоте. Например, номинальная частота E5-2637 составляет 3.5 GHz, а в режиме Turbo Boost может достигать 3.8 GHz. Если же активированы энергосберегающие режимы, частота может падать до 1.2-2.0 GHz, что моментально приводит к замедлению работы 1С.

Настройка дисковой подсистемы

Дисковая подсистема является одним из наиболее частых "узких мест" в производительности 1С и SQL Server. У вас используется 6 SSD дисков по 300 ГБ в RAID 10 массиве, что является хорошей основой. Давайте оптимизируем ее использование.

Выбор дисков и RAID

RAID 10 (RAID 1+0) — это отличный выбор для баз данных, так как он обеспечивает как высокую производительность (благодаря чередованию данных), так и высокую отказоустойчивость (благодаря зеркалированию). Использование SSD дисков многократно увеличивает скорость операций ввода/вывода (IOPS) по сравнению с традиционными HDD.

Размещение файлов SQL Server

Крайне важно правильно распределить файлы SQL Server по дискам для максимальной производительности:

  1. Операционная система: Выделите отдельные SSD диски или логический раздел RAID-массива для установки операционной системы Windows Server. Сообщение 16 предлагает 2 SSD для системы.
  2. Файлы баз данных (.mdf, .ndf): Разместите основные файлы баз данных 1С на отдельном пуле или логическом разделе RAID-массива. Сообщение 16 предлагает 2 SSD для SQL базы.
  3. Файлы журналов транзакций (.ldf): Разместите файлы журналов транзакций SQL Server на отдельном, максимально быстром дисковом разделе. Файлы журналов требуют очень высокой скорости последовательной записи. Сообщение 16 предлагает 2 SSD для журналов SQL.
  4. TempDB: Крайне желательно разместить TempDB на отдельном быстром диске (лучше всего, отдельном RAID-массиве из SSD). Это очень активная база данных, которая интенсивно используется SQL Server для временных операций, сортировок и промежуточных результатов.
  5. Резервные копии: Используйте отдельные, возможно менее быстрые, диски (например, HDD) для хранения резервных копий баз данных. Это разгрузит производительную дисковую подсистему.

Ваша текущая конфигурация (6 SSD в RAID 10) позволяет реализовать такую схему. Мы можем разбить логические тома таким образом, чтобы выделить отдельные дисковые пространства для ОС, данных SQL и журналов SQL.

Форматирование дисков

Для дисков, на которых расположены файлы баз данных SQL Server (включая TempDB), рекомендуется использовать размер кластера 64 КБ при форматировании. Это соответствует оптимальному размеру страницы данных SQL Server и снижает фрагментацию. Для остальных томов (например, для ОС) можно использовать стандартный размер кластера (4 КБ).

Убедитесь, что на дисках, где расположены файлы баз данных и журналов, отключено сжатие, так как оно значительно замедляет операции ввода/вывода.

Оптимизация SQL Server

Неправильная настройка SQL Server — это одна из наиболее частых причин низкой производительности 1С. Давайте рассмотрим ключевые параметры, которые необходимо проверить и настроить.

Настройка памяти для SQL Server

Ваша виртуальная машина SQL Server имеет 69 ГБ ОЗУ, что является хорошим объемом. Однако, важно убедиться, что SQL Server эффективно использует эту память.

  1. Максимальный объем памяти: Установите максимальный объем памяти для SQL Server (параметр Maximum server memory (MB)) таким образом, чтобы оставить достаточно памяти для операционной системы. Рекомендуется оставлять 4-8 ГБ для ОС. В вашем случае, если у вас 69 ГБ, вы можете выделить SQL Server около 61-65 ГБ.
  2. Lock pages in memory: Включите опцию Lock pages in memory (блокировка страниц в памяти) для учетной записи службы SQL Server. Это предотвратит выгрузку страниц SQL Server в файл подкачки Windows, что значительно повышает производительность СУБД. Это делается через групповые политики (gpedit.msc -> Конфигурация компьютера -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя -> Lock pages in memory).

Параллелизм запросов (Max Degree of Parallelism - MDOP)

Параметр Max Degree of Parallelism (MDOP) контролирует, сколько процессорных ядер SQL Server может использовать для выполнения одного запроса.

Файлы TempDB

База данных TempDB является критически важным ресурсом SQL Server.

  1. Размещение: Разместите TempDB на отдельном быстром диске (SSD). Если есть возможность, используйте для нее отдельный логический том или даже отдельный RAID.
  2. Количество файлов данных: Рекомендуется создать несколько файлов данных TempDB (.mdf). Их количество должно быть равно числу физических ядер процессора, но не более 8 (если ядер больше 8, обычно достаточно 8 файлов).
  3. Размер файлов: Все файлы данных TempDB должны быть одинакового размера.
  4. Авторост: Включите авторост для файлов TempDB, но установите фиксированный размер приращения (например, 256-512 МБ), чтобы избежать частых и мелких операций расширения.

Мгновенная инициализация файлов (Instant File Initialization)

Включение Database instant file initialization позволяет ускорить операции создания и расширения файлов баз данных, избегая их заполнения нулями. Это особенно актуально при создании новых баз, добавлении файлов или авторосте. Для этого учетная запись, от имени которой запускается служба SQL Server, должна иметь разрешение Perform Volume Maintenance Tasks.

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

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

  1. Дефрагментация индексов:
    • Рекомендуется перестраивать (REBUILD) индексы с фрагментацией более 30%.
    • Реорганизовывать (REORGANIZE) индексы с фрагментацией в диапазоне 10-30%.
    • Индексы с фрагментацией менее 10% обычно не требуют вмешательства.

    Используйте команды ALTER INDEX REBUILD или ALTER INDEX REORGANIZE.

  2. Обновление статистики: Убедитесь, что статистика по всем таблицам регулярно обновляется. Статистика помогает SQL Server строить оптимальные планы выполнения запросов. Используйте UPDATE STATISTICS tablename WITH FULLSCAN или sp_updatestats.
  3. Очистка кэша процедур: После переиндексации может быть полезно очищать кэш процедур SQL Server с помощью команды DBCC FREEPROCCACHE. Это заставит SQL Server перекомпилировать планы выполнения запросов, используя актуальную статистику и индексы.
  4. Очистка истории: Выполняется. Убедитесь, что очищается история SQL Server Agent, msdb и другие служебные базы данных, чтобы они не разрастались.

Ненужные службы и протоколы

  1. Ненужные службы SQL Server: Отключите службы SQL Server, такие как FullText Search, Reporting Services, Analysis Services, Integration Services, если они не используются вашей системой 1С. Это освободит ценные ресурсы.
  2. Сетевые протоколы: Для связи между виртуальными машинами SQL Server и 1С Server (которые находятся на разных ВМ) должен использоваться протокол TCP/IP. Убедитесь, что он включен и настроен. Протокол Named Pipes можно отключить, если он не используется для других приложений.

Настройка сервера приложений 1С и кластера 1С

Сервер приложений 1С также требует внимательной настройки для обеспечения максимальной производительности.

Лицензирование 1С и CPU

Важно помнить, что стандартные лицензии 1С ПРОФ для сервера приложений (1C:Enterprise Server) обычно не используют более 12 ядер CPU. Если ваш физический сервер имеет 16 ядер, а виртуальная машина 1С Server имеет, например, 8 виртуальных ядер, администратор может видеть низкую общую загрузку процессора на физическом хосте, но при этом процессы 1С могут быть ограничены в использовании доступных им vCPU, если они не задействуются платформой. Для эффективного использования большего количества ядер требуются дополнительные лицензии 1С или специальные настройки.

Файл подкачки (Page File)

На виртуальной машине сервера приложений 1С выделено 30 ГБ ОЗУ. При таком объеме памяти мы можем рассмотреть оптимизацию файла подкачки:

Dynamic Fair Share Scheduling (DFSS)

На терминальных серверах и некоторых версиях Windows Server (начиная с 2012), может быть активна служба Dynamic Fair Share Scheduling (DFSS). Эта служба предназначена для равномерного распределения аппаратных ресурсов между пользователями терминального сервера. Если вы не используете сервер приложений 1С как терминальный сервер для пользователей, а только для работы кластера 1С, отключение этой службы может повысить производительность, так как она может вносить искусственные задержки.

Особенности гипервизора Hyper-V

Сам гипервизор Hyper-V имеет свои настройки, которые могут влиять на производительность виртуальных машин.

Планировщик Hyper-V (Scheduler)

В Hyper-V существуют различные режимы работы планировщика виртуальных машин:

Если вы используете более свежую версию Hyper-V, переключение на classic scheduler может дать значительный прирост производительности (до 50%) для рабочих нагрузок 1С. Это настраивается на уровне хоста Hyper-V через PowerShell.

Сетевая инфраструктура

Вы упомянули изменения в сети, связанные с переходом на IP-телефонию. Хотя это может показаться косвенной причиной, любые изменения в сетевой инфраструктуре могут влиять на производительность 1С, так как взаимодействие между клиентами, сервером 1С и SQL Server полностью зависит от сети.

  1. Виртуальный свитч: Для связи между виртуальными машинами SQL Server и 1С Server используется виртуальный свитч Hyper-V. Убедитесь, что он настроен для максимальной пропускной способности и не имеет ограничений по скорости.
  2. Пропускная способность: Заявленная гигабитная сеть должна обеспечивать достаточную пропускную способность для взаимодействия ВМ. Проверьте отсутствие потерь пакетов и высоких задержек (latency) между ВМ с помощью утилит ping и tracert.
  3. Нагрузка на сеть: Убедитесь, что переход на IP-телефонию не привел к перегрузке сетевого оборудования (коммутаторов, маршрутизаторов) или увеличению сетевых коллизий. Мониторинг сетевого трафика поможет выявить такие проблемы.

Комплексный подход к диагностике и мониторингу

Для выявления "узких мест" и контроля за изменениями, мы рекомендуем использовать комплексный подход к мониторингу:

  1. Тест Гилева: Продолжайте использовать тест Гилева для оценки производительности после каждого внесения изменений. Это даст объективную картину прироста или падения производительности.
  2. Встроенные средства 1С: Используйте подсистему «Оценка производительности» из Библиотеки стандартных подсистем (БСП) в 1С для анализа запросов и процедур, которые вызывают наибольшие задержки.
  3. Мониторинг ресурсов: Используйте инструменты мониторинга (например, Perfmon в Windows, Zabbix, Prometheus) для отслеживания загрузки CPU, использования RAM, активности дисков (IOPS, Latency) и сетевого трафика на физическом хосте и на каждой виртуальной машине.
  4. SQL Server Profiler / Extended Events: Используйте эти инструменты для анализа медленных запросов к базе данных SQL Server, которые отправляет 1С.
  5. Анализ планов запросов: Регулярно анализируйте планы выполнения запросов в SQL Server Management Studio для выявления неоптимальных запросов.

Только комплексный анализ и поэтапное применение оптимизационных мер позволят вам добиться стабильной и высокой производительности 1С:ЗУП и других баз данных на вашей инфраструктуре.

← На главную