Как ускорить работу сервера 1С:Предприятия и MS SQL Server, когда тест Гилева показывает низкую производительность из-за замедления процессора?

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

Мы сталкиваемся с распространенной проблемой: мощное серверное оборудование, предназначенное для высокой производительности, по факту демонстрирует крайне низкие показатели в специализированных тестах, таких как тест Гилева для 1С. В данной ситуации речь идет о сервере Dell с двумя процессорами Xeon E5-2667v4, 192 ГБ оперативной памяти DDR4 и быстрой дисковой подсистемой на SSD, где был установлен Windows 2019 Standart, MS SQL Server 2019 и Сервер 1С предприятия. Несмотря на эти впечатляющие характеристики, тест Гилева изначально показывал всего 13 баллов, что, несомненно, является удручающим результатом. Давайте вместе разберем, как мы можем значительно поднять производительность такого сервера.

Выясним причину низкой производительности

Первое, на что мы обращаем внимание при анализе этой ситуации, — это замер производительности контура 1С и поиск узких мест, а именно поведение процессоров во время нагрузочного теста. При запуске теста Гилева процессоры загружены всего на 1% и работают на крайне низкой частоте — 1.1-1.2 ГГц. Это происходит, даже если в операционной системе Windows включен режим высокой производительности и процессоры в других задачах могут нормально буститься до своих максимальных частот. Такая картина однозначно указывает на активные механизмы энергосбережения, которые мешают процессорам выйти на полную мощность. Мы видим, что сервер не использует свой потенциал, находясь в режиме ожидания или минимального потребления энергии.

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

Шаг 1: Настройки BIOS – ключ к максимальной производительности

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

  1. Отключение QPI Link L1 Power Management: Этот параметр отвечает за управление питанием шины QPI (QuickPath Interconnect), которая используется для связи между процессорами и процессором с контроллером памяти. В режиме L1 Power Management эта шина может переходить в состояние пониженного энергопотребления. Мы должны перевести этот параметр в положение Disable. Отключение этого режима гарантирует, что QPI Link всегда будет работать на полной мощности, минимизируя задержки при обмене данными между компонентами системы.
  2. Установка System Profile в Perfomance: Современные серверы Dell и другие производители предоставляют так называемые "профили системы", которые представляют собой набор преднастроенных параметров BIOS, оптимизированных для различных сценариев использования. Профиль System Profile - Perfomance (или аналогичный, например, "Maximum Performance") предназначен для достижения максимальной производительности ценой повышенного энергопотребления. Этот профиль автоматически изменяет множество других параметров BIOS, таких как частоты шин, тайминги памяти и режимы работы процессора, чтобы обеспечить наилучшую производительность. Мы обязательно должны выбрать этот профиль.

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

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

Для серверов Dell PowerEdge, как и для нашего кейса, существуют также специальные профили, такие как Database Optimized Performance Profile. Мы можем исследовать эти профили, так как они автоматически настраивают множество параметров BIOS для оптимизации работы с базами данных, включая потенциальное отключение технологий виртуализации и x2APIC в некоторых случаях. Однако, если виртуализация или x2APIC необходимы для других задач, мы сможем включить их после применения профиля. Также мы рекомендуем отключить в BIOS все неиспользуемые интегрированные устройства (например, неиспользуемые сетевые карты, COM-порты, SATA-контроллеры), что может немного снизить накладные расходы на инициализацию и управление оборудованием.

Шаг 2: Настройка операционной системы Windows Server

Хотя мы выяснили, что настройки BIOS имеют первостепенное значение, мы все равно должны убедиться, что операционная система Windows Server также настроена на максимальную производительность. Мы проверим следующие параметры:

  1. План электропитания: Убедимся, что выбран план электропитания "Высокая производительность". Это стандартная рекомендация для серверных систем.
  2. Дополнительные параметры плана электропитания: В настройках выбранного плана перейдем в "Изменить дополнительные параметры питания". Найдем раздел "Управление питанием процессора" и убедимся, что параметр "Минимальное состояние процессора" установлен на 100%. Это гарантирует, что процессор никогда не будет опускать свою частоту ниже максимума по инициативе операционной системы.

Шаг 3: Оптимизация MS SQL Server для 1С:Предприятия

После того как мы обеспечили максимальную производительность аппаратной части, нам необходимо тонко настроить MS SQL Server, который является основой для работы 1С. Эти настройки помогут SQL Server более эффективно обрабатывать запросы от 1С:Предприятия.

  1. Максимальная степень параллелизма (Max Degree of Parallelism - MDOP): Мы рассмотрим параметр Max Degree of Parallelism (MDOP). Для конфигураций 1С:Предприятия часто оптимальным значением является 1. Мы должны понимать, что платформа 1С не предназначена для распараллеливания запросов внутри СУБД в полной мере. Установка MDOP в 1 предотвращает SQL Server от попыток распараллелить выполнение одного запроса на несколько ядер, что в контексте 1С часто приводит к накладным расходам на синхронизацию, которые могут превысить любой потенциальный выигрыш от параллельной обработки. Таким образом, мы избегаем ненужных задержек и обеспечиваем более предсказуемую производительность для 1С-нагрузки.
  2. Максимальный объем памяти сервера (Maximum Server Memory): По умолчанию SQL Server стремится использовать всю доступную оперативную память сервера, что может негативно сказаться на работе операционной системы и самого сервера 1С. Мы обязательно должны установить лимит памяти для SQL Server. Рекомендуется оставить 2-4 ГБ оперативной памяти для операционной системы и дополнительную память для процессов сервера 1С. Например, мы можем выделить приблизительно 1.5 ГБ на каждый процесс rphost (рабочий процесс сервера 1С). Таким образом, если на сервере 192 ГБ ОЗУ, а 1С использует, допустим, 8 rphost процессов, мы оставим 4 ГБ для ОС + 8 * 1.5 ГБ = 12 ГБ для 1С, итого 16 ГБ. Тогда для SQL Server мы установим лимит в 192 - 16 = 176 ГБ.
  3. Shared Memory (разделяемая память): Если MS SQL Server и Сервер 1С предприятия установлены на одной и той же физической машине, мы должны убедиться, что протокол Shared Memory включен в клиентских протоколах SQL Server Configuration Manager. Это самый быстрый способ подключения, так как данные передаются через оперативную память, минуя медленные сетевые интерфейсы и связанные с ними накладные расходы.
  4. Мгновенная инициализация файлов (Database Instant File Initialization - IFI): Мы включим эту возможность, так как она значительно ускоряет операции, связанные с файлами баз данных: создание новых баз, добавление файлов данных, увеличение их размера и восстановление баз. С включенной IFI SQL Server может выделять место на диске практически мгновенно, не перезаписывая предварительно выделенные блоки нулями. Для этого нам необходимо добавить учетную запись пользователя, от имени которого работает служба SQL Server, в политику безопасности Windows "Выполнение задач по обслуживанию томов" (Perform Volume Maintenance Tasks).
  5. Блокировка страниц в памяти (Lock pages in memory - LPIM): Мы активируем эту настройку, чтобы позволить SQL Server сохранять данные в оперативной памяти и предотвращать выгрузку страниц данных в файл подкачки на диске. Это критически важно для производительности, так как обмен данными с диском всегда значительно медленнее, чем доступ к ОЗУ. Мы включаем Lock pages in memory в групповых политиках для учетной записи службы SQL Server.
  6. Boost priority (повышение приоритета сервера): Мы можем рассмотреть возможность включения флага "Поддерживать приоритет SQL Server" (Boost SQL Server priority). Эта настройка позволяет SQL Server работать с более высоким приоритетом в операционной системе, что может положительно сказаться на производительности при высокой загрузке сервера.
  7. Размер автоувеличения файлов базы данных и логов: Мы должны установить адекватный размер авторасширения для файлов баз данных (.mdf, .ndf) и журналов транзакций (.ldf). Слишком малый размер (например, 1 МБ или 10% от текущего размера) приводит к частым операциям расширения, которые замедляют работу SQL Server, поэтому полезно использовать SQL Базомер для анализа дискового пространства. Рекомендуется устанавливать фиксированный размер, например, 200 МБ для файлов данных и 50 МБ для логов, или даже большие значения (от 512 МБ до 5 ГБ в зависимости от общего размера базы и скорости роста), чтобы минимизировать количество этих операций.
  8. Регламентные задания: Мы обязательно настроим планы обслуживания для SQL Server. Они должны включать регулярную дефрагментацию индексов (REBUILD/REORGANIZE INDEX), обновление статистики (UPDATE STATISTICS), очистку кэша процедур (команда DBCC FREEPROCCACHE может быть полезной в некоторых случаях, но применять ее нужно осторожно) и, конечно же, регулярное резервное копирование. Эти задачи поддерживают базу данных в оптимальном состоянии.
  9. Настройка TempDB: Мы уделим особое внимание базе данных TempDB. Для максимальной производительности мы рекомендуем выделить TempDB на отдельный, максимально быстрый диск (если возможно). Кроме того, мы должны обеспечить достаточное количество файлов для TempDB – общая рекомендация составляет 1 файл на каждое логическое ядро процессора, но не более 8 файлов. Это помогает избежать узких мест (Latch Contention) при интенсивной работе с временными таблицами.
  10. Уровни изоляции транзакций: Мы можем рассмотреть возможность включения режимов ALLOW_SNAPSHOT_ISOLATION ON и READ_COMMITTED_SNAPSHOT ON для баз данных 1С. Эти режимы позволяют читающим запросам не блокировать пишущие запросы, что значительно уменьшает ожидания на блокировках чтения и повышает общую отзывчивость системы при высокой конкуренции.

Шаг 4: Общие рекомендации по оптимизации 1С и сервера

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

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

Подведем итоги

Мы видим, что ускорение сервера 1С:Предприятия — это комплексная задача, требующая внимания к множеству аспектов. Однако, как показал наш опыт, ключевым фактором, который может дать немедленный и значительный прирост производительности, является правильная настройка BIOS сервера, направленная на отключение всех режимов энергосбережения процессора. После устранения этого основного препятствия, мы можем приступать к тонкой настройке операционной системы и MS SQL Server. Комплексный подход, начиная с "железа" и заканчивая настройками СУБД и самой конфигурации 1С, позволит нам добиться максимальной эффективности от вашей системы и значительно повысить комфорт работы пользователей.

← На главную