Как правильно настроить сервер под 1С:ERP, если база работает медленно?

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

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

Давайте подробно разберем, почему так происходит, проанализируем архитектурные особенности «1С:ERP» и выясним, как правильно настроить серверное оборудование, СУБД MS SQL Server и саму платформу «1С:Предприятие», чтобы система работала максимально быстро.

В чем главная причина медленной работы 1С:ERP на мощных серверах?

Ключевое отличие «1С:ERP» от более простых конфигураций заключается в колоссальном объеме метаданных, сложных аналитических разрезах, тяжелых запросах и длинных цепочках транзакций при проведении документов. Операции расчета себестоимости, распределения затрат и закрытия месяца выполняются платформой в один поток. Это означает, что для критически важных бизнес-процессов общая многоядерность процессора не имеет значения — важна исключительно производительность одного конкретного ядра, на котором выполняется поток вычислений.

Если на вашем сервере установлен многоядерный процессор с низкой базовой частотой (например, популярные серверные чипы линейки Intel Xeon E5-2640 со штатной частотой 2.40–2.60 GHz), то ERP неизбежно будет работать медленно. Программа просто не сможет загрузить все ядра одновременно, а одно ядро на такой частоте не справляется с обработкой гигантских массивов данных.

Рассмотрим по шагам комплекс мер, которые помогут оптимизировать производительность системы.

Шаг 1. Оптимизация процессора (CPU) и настроек BIOS

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

  1. Включите профиль максимальной производительности в BIOS/UEFI. Зайдите в настройки сервера при загрузке и найдите параметр управления электропитанием (обычно называется Power Management или System Profile). Переведите его в режим High Performance (Максимальная производительность).
  2. Отключите энергосберегающие состояния ядер. Отключите параметры C-States, C1E, а также технологии динамического снижения частоты, такие как Intel SpeedStep или Demand Based Switching. Это гарантирует, что процессор всегда будет работать на своей максимальной или турбо-частоте, не тратя драгоценные миллисекунды на «пробуждение» ядер при поступлении запросов от 1С.
  3. Настройте схему электропитания в операционной системе. В Windows Server зайдите в Панель управления -> Электропитание и выберите схему «Высокая производительность» (High Performance). В дополнительных параметрах убедитесь, что минимальное и максимальное состояние процессора установлены на 100%.

Шаг 2. Оптимизация дисковой подсистемы: уход от классических HDD к NVMe/SSD

Использование устаревших интерфейсов дисков, таких как SCSI или классических механических SAS HDD даже в быстрых RAID-массивах, для баз данных ERP категорически недопустимо. ERP-система совершает миллионы мелких операций случайного чтения и записи (так называемые IOPS), с которыми физические жесткие диски не способны справиться из-за физических ограничений считывающих головок.

Рассмотрим правила организации дисковой подсистемы:

Шаг 3. Разделение ролей и настройка оперативной памяти

Распространенная ошибка — развертывание всей инфраструктуры («всё в одном»): сервера приложений 1С, СУБД MS SQL Server, терминального сервера для пользователей и множества тестовых копий баз данных на одной физической машине без жесткого разграничения ресурсов.

Выясним, как правильно распределить оперативную память на сервере объемом 128 ГБ, чтобы процессы не мешали друг другу и операционная система не уходила в глубокий своп (swap):

Для настройки лимита памяти MS SQL Server выполните следующий T-SQL запрос в СУБД (установим жесткий лимит для SQL Server на уровне 80 ГБ, оставив 48 ГБ под ОС, процессы 1С и системный кэш):


EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 81920; -- 80 ГБ в мегабайтах
RECONFIGURE;

Шаг 4. Тонкая настройка MS SQL Server под специфику 1С

Для того чтобы СУБД эффективно обрабатывала запросы ERP, необходимо изменить ряд стандартных настроек MS SQL Server.

1. Настройка протокола Shared Memory. Если сервер 1С и MS SQL Server работают на одном компьютере, обязательно включите протокол Shared Memory (Общая память) в диспетчере конфигурации SQL Server (SQL Server Network Configuration -> Protocols). В строке подключения к серверу баз данных в кластере 1С указывайте локальное имя сервера (например, localhost или .). Это позволит процессу 1С обмениваться данными со SQL-сервером напрямую через ОЗУ, минуя сетевые протоколы и стек TCP/IP, что повышает скорость передачи данных до 20%.

2. Настройка параллелизма (MAXDOP и Cost Threshold). По умолчанию SQL Server пытается распараллелить выполнение любого сложного запроса на все доступные ядра процессора. Для учетных систем класса OLTP (к которым относится 1С) это приводит к взаимным транзакционным блокировкам. Рекомендуется установить максимальную степень параллелизма (MAXDOP) равной 1 (запросы выполняются строго в один поток). Если на сервере выполняются очень тяжелые отчеты и вы хотите разрешить ограниченный параллелизм, установите MAXDOP равным 2 или 4, но при этом обязательно поднимите порог стоимости параллелизма (Cost Threshold for Parallelism) со стандартных 5 до 50.

Применим эти параметры через T-SQL:


EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1;
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

3. Оптимизация базы TempDB. База TempDB активно используется 1С для работы с временными таблицами. Для снижения конкуренции за распределение страниц памяти настройте её следующим образом:

  1. Количество файлов данных TempDB должно быть равно количеству физических ядер процессора (но не более 8 файлов, если ядер больше). Если у вас 2 процессора по 8 ядер, создайте ровно 8 файлов данных.
  2. Все файлы данных должны иметь абсолютно одинаковый начальный размер (например, по 1024 МБ каждый) и одинаковый фиксированный шаг авторасширения (например, по 256 МБ). Не используйте расширение в процентах!

4. Включение мгновенной инициализации файлов (Instant File Initialization). Эта функция позволяет СУБД создавать и расширять файлы данных мгновенно, не тратя время на заполнение нового дискового пространства нулями. Это убирает секундные зависания системы в моменты, когда база данных или TempDB запрашивают у диска дополнительное место при росте.

Для включения откройте оснастку «Локальная политика безопасности» (secpol.msc) на сервере Windows -> Локальные политики -> Назначение прав пользователя. Найдите политику «Выполнение задач по обслуживанию томов» (Perform volume maintenance tasks) и добавьте в неё учетную запись, из-под которой запускается служба MS SQL Server. После этого перезапустите службу SQL Server.

Шаг 5. Оптимизация платформы 1С и настроек ERP

После настройки оборудования и СУБД перейдем к оптимизации на уровне платформы «1С:Предприятие 8».

1. Отключение нового формата Журнала регистрации. Начиная с версии 8.3.5, в платформе появился новый формат журнала регистрации на базе СУБД SQLite (файлы с расширением .lgd). В крупных и нагруженных базах, таких как ERP, при интенсивной работе пользователей этот формат вызывает серьезные проблемы с производительностью. SQLite блокирует базу журнала целиком при любой операции записи. Если одновременно записывается много событий, процессы 1С выстраиваются в очередь, вызывая зависания.

Рекомендуется вернуть старый текстовый формат журнала регистрации (файлы с расширением .lgf). Для этого в файле описания информационной базы 1cesrv.lst (находится в каталоге параметров кластера 1С) для нужной базы установите параметр:

"LogFormat","1"

После изменения параметра перезапустите службу сервера 1С. Также не забывайте регулярно настраивать сокращение журнала регистрации, чтобы его размер не превышал нескольких гигабайт, и выносите каталог с журналом на быстрый отдельный SSD.

2. Настройка рабочих процессов кластера 1С (rphost). Не запускайте всю нагрузку в одном процессе rphost. Из-за утечек памяти и накопления фрагментации процесс может начать потреблять слишком много ОЗУ. Настройте кластер 1С так, чтобы на каждые 20-30 пользователей приходился один рабочий процесс, и установите лимит оперативной памяти на один процесс, при превышении которого он будет автоматически безопасно перезапускаться платформой.

3. Отключение неиспользуемых регламентных заданий. В «1С:ERP» по умолчанию включены сотни регламентных и фоновых заданий (извлечение текстов для полнотекстового поиска, классификаторы, загрузка курсов валют, проверка контрагентов, расчеты статистик и т.д.). Многие из них работают непрерывно, создавая фоновую нагрузку на процессор и жесткие диски СУБД. Проанализируйте список регламентных заданий в режиме «1С:Предприятие» (меню НСИ и администрирование -> Обслуживание -> Регламентные операции) и принудительно отключите все функции, которые не используются на вашем предприятии.

4. Перевод RLS в производительный режим. Если в вашей системе настроено ограничение доступа на уровне записей (RLS) — например, менеджеры видят только свои организации или склады, — то к каждому запросу пользователя СУБД неявно добавляет сложнейшие конструкции проверки прав. Перейдите в настройках прав доступа ERP на «Производительный режим работы RLS». Это изменит алгоритм наложения ограничений, перенеся часть вычислений в специальные служебные таблицы базы данных, что колоссально ускорит открытие списков документов и проведение операций.

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

Оптимизация производительности «1С:ERP» — это всегда комплексный процесс. Не существует одной волшебной кнопки, нажатие которой заставит систему работать быстрее. Только последовательное выполнение шагов: разгон процессора в BIOS, переход на быстрые SSD-диски, грамотное распределение ОЗУ между СУБД и 1С, тонкая настройка MS SQL Server и оптимизация параметров самой платформы 1С — позволит вам добиться максимальной скорости работы и стабильности ERP-системы даже при больших объемах данных и высокой активности пользователей.

← На главную