Как заставить сервер 1С работать на полную мощность и ускорить проведение документов?

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

Часто возникает ситуация, когда компания вкладывает значительные средства в покупку мощного серверного оборудования, но ожидаемого «взлета» производительности 1С не происходит. Процессоры загружены на 20%, оперативной памяти достаточно, но документы в «1С:Управление торговлей» или «1С:ERP» проводятся мучительно долго. Разберем по шагам, как настроить связку железа, ОС, MS SQL Server и платформы 1С, чтобы выжать максимум из имеющихся ресурсов.

Настройка BIOS и параметров электропитания сервера

Прежде чем приступать к программным настройкам, проанализируем базовый уровень — железо и BIOS. Современные серверные процессоры (например, серии Intel Xeon Gold) имеют агрессивные функции энергосбережения, которые могут «засыпать» в моменты низкой нагрузки, что критично для 1С, требующей мгновенного отклика.

Выясним, какие настройки необходимо проверить в первую очередь:

  1. System Profile в BIOS: Обязательно установим значение Performance (или High Performance). Это отключает динамическое управление частотой со стороны оборудования и заставляет процессор работать на максимальной тактовой частоте постоянно.
  2. C-States и P-States: Рекомендуется отключить глубокие состояния сна процессора, чтобы исключить задержки (latency) при переключении ядер из режима ожидания в рабочий режим.
  3. Схема питания в Windows Server: Перейдем в панель управления и выберем схему «Высокая производительность». Дополнительно проверим, чтобы в дополнительных параметрах питания минимальное и максимальное состояние процессора было равно 100%.

Оптимизация работы многопроцессорных систем (NUMA)

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

Разберем механизм CPU Affinity. Для систем, где 1С и SQL Server установлены на одном физическом сервере, крайне эффективно будет разделить их по разным процессорам (сокетам). Например, закрепим за SQL Server ядра процессора №0, а за процессами rphost.exe — ядра процессора №1. Это позволит минимизировать использование шины между процессорами и ускорит работу с памятью.

Тонкая настройка MS SQL Server под задачи 1С

Настроим СУБД так, чтобы она не мешала платформе 1С, но при этом максимально быстро отдавала данные. Рассмотрим ключевые параметры:

Параметр MAXDOP (Maximum Degree of Parallelism): Посмотрим на план запросов 1С. Большинство из них — это короткие транзакционные запросы. Если SQL попытается распараллелить один маленький запрос на все 16 или 24 ядра, накладные расходы на сборку результата будут выше, чем само выполнение. Рекомендуем установить значение 1 для большинства баз 1С, либо 2–4 для очень тяжелых аналитических отчетов.

Memory Limit: Проанализируем потребление памяти. Если сервер 1С и SQL живут на одном хосте, необходимо жестко ограничить Maximum server memory для SQL Server. Оставим системе и 1С минимум 20-30% оперативной памяти, иначе при пиковых нагрузках SQL «вытеснит» сервер 1С в файл подкачки (swapping), что приведет к мгновенному падению производительности.

Shared Memory: Убедимся, что включен протокол Shared Memory (Общая память) в SQL Server Configuration Manager. Поскольку сервер 1С и SQL находятся «в одной коробке», этот протокол позволяет им обмениваться данными напрямую через оперативную память, минуя сетевой стек, что значительно быстрее.

Настройка кластера 1С:Предприятие

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

Посмотрим на параметры рабочего сервера в консоли администрирования 1С:

Анализ и оптимизация программного кода

Иногда даже самое мощное железо бессильно перед неоптимальным кодом. Проанализируем ситуацию на примере «Управления торговлей 11». Если проведение чека занимает 5–7 секунд, проблема часто кроется в избыточных запросах или блокировках.

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


// Пример оптимизации: вместо запроса в цикле используем временную таблицу
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|   Товары.Номенклатура КАК Номенклатура,
|   Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВТ_Товары
|ИЗ
|   &ТаблицаТоваров КАК Товары;
|
|ВЫБРАТЬ
|   ВТ_Товары.Номенклатура,
|   Цены.Цена
|ИЗ
|   ВТ_Товары КАК ВТ_Товары
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК Цены
|   ПО ВТ_Товары.Номенклатура = Цены.Номенклатура";

Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаДокумента);
Запрос.УстановитьПараметр("Период", ДатаДокумента);
Результат = Запрос.Выполнить().Выгрузить();

Проанализируем также влияние фоновых заданий. В современных конфигурациях 1С (УТ 11, ERP) активно используется механизм отложенного проведения. Если документы проводятся долго, проверим, не пытаются ли расчеты себестоимости или партионного учета выполняться в реальном времени при каждом проведении. Перевод этих процессов в регламентные задания может значительно ускорить работу пользователей в интерфейсе.

Работа с дисковой подсистемой

Несмотря на наличие SSD, диски могут стать узким местом из-за очередей. Разберем правила разделения данных:

  1. Разделение файлов SQL: Поместим файлы данных (.mdf) и файлы логов (.ldf) на разные физические диски (или разные RAID-массивы). Логи пишутся последовательно, и любое соседство с другими процессами чтения/записи замедляет транзакции.
  2. TempDB: Это «черновик» SQL сервера. Разместим его на самом быстром доступном диске (NVMe SSD). Количество файлов TempDB должно соответствовать количеству ядер (но обычно не более 8).
  3. Кэш сервера 1С: Очистка старого кэша и размещение папки srvinfo на быстром SSD также добавит отзывчивости системе.

Подводя итог, отметим, что «заставить сервер работать на всю катушку» — это не одна галочка в настройках, а комплекс мероприятий от BIOS до оптимизации конкретных запросов в коде 1С.

← На главную