Как повысить производительность 1С и MS SQL на мощном сервере?

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

Часто возникает ситуация, когда компания приобретает сверхмощное оборудование — например, сервер с двумя процессорами AMD Epyc (96 ядер) и 512 Гб оперативной памяти, но типовая конфигурация (такая как 1С:Комплексная автоматизация 2) продолжает работать медленно. Рассмотрим, почему избыточное железо без правильной настройки не дает прироста скорости, и разберем по шагам, как оптимизировать связку 1С и MS SQL.

Анализируем специфику процессоров AMD Epyc и NUMA-архитектуру

Проанализируем архитектуру современных многоядерных систем. Процессоры AMD Epyc состоят из нескольких чиплетов, что создает сложную структуру доступа к памяти (NUMA). Если операционная система или SQL Server не понимают эту структуру, возникают задержки при обращении к «чужим» модулям памяти.

Разберем, что необходимо сделать в первую очередь:

  1. Настройка BIOS: Проверим режим Nodes Per Socket (NPS). Для систем 1С рекомендуется устанавливать значение NPS=4. Это заставляет ОС видеть больше мелких NUMA-узлов, что позволяет SQL Server более эффективно распределять потоки данных.
  2. Режим электропитания: В BIOS обязательно выставим Maximum Performance. По умолчанию многие серверы работают в режиме энергосбережения, из-за чего ядра процессора «засыпают». Для коротких запросов 1С время «пробуждения» ядра критично и воспринимается пользователями как «зависание» интерфейса.

Оптимизируем настройки MS SQL Server для 1С

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

Выполним следующие настройки в SQL Server Management Studio (SSMS):

  1. Ограничение памяти (Memory): Нельзя оставлять настройки памяти «по умолчанию». При наличии 512 Гб ОЗУ, выделим под SQL Server около 300–350 Гб, оставив остальное для работы сервера приложений 1С и нужд ОС. Это предотвратит конкуренцию за ресурсы.
  2. Настройка параллелизма (MAXDOP): На серверах с большим количеством ядер (96 ядер в нашем примере) параметр Max Degree of Parallelism нельзя оставлять в значении 0. Для 1С оптимально установить 8 или даже 4. Это ограничит количество ядер, которые SQL может использовать для выполнения одного запроса, предотвращая «очереди» на процессоре.
  3. Cost Threshold for Parallelism: По умолчанию этот параметр равен 5. Для 1С это очень мало. SQL пытается параллелить даже простейшие запросы, тратя на управление потоками больше времени, чем на сам расчет. Рекомендуется поднять это значение до 50.

Настраиваем протокол Shared Memory

Посмотрим на конфигурацию, где сервер 1С и SQL Server установлены на одной физической машине. В этом случае общение между ними через сетевой протокол TCP/IP создает лишние накладные расходы.

Выясним, как ускорить обмен данными:

В «Диспетчере конфигурации SQL Server» включим протокол Shared Memory. После этого в консоли администрирования 1С при подключении к базе в поле «Сервер баз данных» укажем не сетевое имя сервера, а точку . или (local). Это позволит компонентам 1С и SQL обмениваться данными напрямую через оперативную память, минуя сетевой стек, что дает прирост производительности до 10-15% на операциях чтения/записи.

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

Проанализируем состояние системной базы TempDB. В конфигурациях КА 2 или ERP нагрузка на временные таблицы огромна. Если TempDB состоит из одного файла, возникает очередь на запись.

Рекомендуем следующие шаги:

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

Рассмотрим важные параметры ОС, которые часто упускают из виду:

Lock Pages in Memory (Закрепление страниц в памяти): Учетной записи, под которой запущен SQL Server, нужно выдать права на закрепление страниц. Это гарантирует, что Windows не «вытолкнет» кэш SQL сервера в файл подкачки на диске при внезапной нагрузке от других процессов.

Схема электропитания: В панели управления Windows установим схему «Высокая производительность». Это критически важно для работы планировщика задач 1С.

Как проверить результат?

Для объективной оценки проделанной работы воспользуемся следующими методами:

  1. Тест Гилева: Запустим тест для оценки производительности в «попугаях». Это даст общее понимание, насколько эффективно используется процессор и память.
  2. Замер APDEX: В самой 1С настроим замер производительности для ключевых операций (проведение документа «Реализация товаров», открытие формы списка).
  3. Анализ Wait Stats: В SQL Server проанализируем типы ожиданий. Если после настроек в топе остается CXPACKET — нужно еще раз проверить настройки параллелизма.

Важный вывод: Для систем 1С на мощном «железе» ключевым фактором является не количество ресурсов, а их правильное ограничение и распределение. Использование Shared Memory, настройка MAXDOP и оптимизация NUMA для AMD Epyc позволяют полностью раскрыть потенциал сервера.

← На главную