Часто возникает ситуация, когда компания приобретает сверхмощное оборудование — например, сервер с двумя процессорами AMD Epyc (96 ядер) и 512 Гб оперативной памяти, но типовая конфигурация (такая как 1С:Комплексная автоматизация 2) продолжает работать медленно. Рассмотрим, почему избыточное железо без правильной настройки не дает прироста скорости, и разберем по шагам, как оптимизировать связку 1С и MS SQL.
Проанализируем архитектуру современных многоядерных систем. Процессоры AMD Epyc состоят из нескольких чиплетов, что создает сложную структуру доступа к памяти (NUMA). Если операционная система или SQL Server не понимают эту структуру, возникают задержки при обращении к «чужим» модулям памяти.
Разберем, что необходимо сделать в первую очередь:
NPS=4. Это заставляет ОС видеть больше мелких NUMA-узлов, что позволяет SQL Server более эффективно распределять потоки данных.Maximum Performance. По умолчанию многие серверы работают в режиме энергосбережения, из-за чего ядра процессора «засыпают». Для коротких запросов 1С время «пробуждения» ядра критично и воспринимается пользователями как «зависание» интерфейса.Рассмотрим ситуацию, когда база данных небольшая (около 19 Гб), а ресурсов сервера много. SQL Server по умолчанию склонен захватывать всю доступную память и пытаться распараллелить любой запрос на все доступные ядра, что в случае с 1С вредно.
Выполним следующие настройки в SQL Server Management Studio (SSMS):
Max Degree of Parallelism нельзя оставлять в значении 0. Для 1С оптимально установить 8 или даже 4. Это ограничит количество ядер, которые SQL может использовать для выполнения одного запроса, предотвращая «очереди» на процессоре.Посмотрим на конфигурацию, где сервер 1С и SQL Server установлены на одной физической машине. В этом случае общение между ними через сетевой протокол TCP/IP создает лишние накладные расходы.
Выясним, как ускорить обмен данными:
В «Диспетчере конфигурации SQL Server» включим протокол Shared Memory. После этого в консоли администрирования 1С при подключении к базе в поле «Сервер баз данных» укажем не сетевое имя сервера, а точку . или (local). Это позволит компонентам 1С и SQL обмениваться данными напрямую через оперативную память, минуя сетевой стек, что дает прирост производительности до 10-15% на операциях чтения/записи.
Проанализируем состояние системной базы TempDB. В конфигурациях КА 2 или ERP нагрузка на временные таблицы огромна. Если TempDB состоит из одного файла, возникает очередь на запись.
Рекомендуем следующие шаги:
TempDB (оптимально 8 или 12 файлов) равного размера.FULLSCAN. Типового «Тестирования и исправления» в конфигураторе 1С недостаточно для тяжелых запросов в Комплексной автоматизации.Рассмотрим важные параметры ОС, которые часто упускают из виду:
Lock Pages in Memory (Закрепление страниц в памяти): Учетной записи, под которой запущен SQL Server, нужно выдать права на закрепление страниц. Это гарантирует, что Windows не «вытолкнет» кэш SQL сервера в файл подкачки на диске при внезапной нагрузке от других процессов.
Схема электропитания: В панели управления Windows установим схему «Высокая производительность». Это критически важно для работы планировщика задач 1С.
Для объективной оценки проделанной работы воспользуемся следующими методами:
CXPACKET — нужно еще раз проверить настройки параллелизма.Важный вывод: Для систем 1С на мощном «железе» ключевым фактором является не количество ресурсов, а их правильное ограничение и распределение. Использование Shared Memory, настройка MAXDOP и оптимизация NUMA для AMD Epyc позволяют полностью раскрыть потенциал сервера.