Многие системные администраторы и специалисты по внедрению сталкиваются с парадоксальной ситуацией: на одном и том же сервере базы «1С:Бухгалтерия», «1С:Управление нашей фирмой» или «1С:Зарплата и управление персоналом» работают безупречно, но при запуске «1С:ERP Управление предприятием» система начинает демонстрировать крайнюю медлительность. Интерфейс открывается с задержками, проведение документов занимает слишком много времени, а регламентные операции и закрытие месяца длятся часами. При этом графики загрузки оборудования показывают, что процессор и оперативная память простаивают.
Давайте подробно разберем, почему так происходит, проанализируем архитектурные особенности «1С:ERP» и выясним, как правильно настроить серверное оборудование, СУБД MS SQL Server и саму платформу «1С:Предприятие», чтобы система работала максимально быстро.
Ключевое отличие «1С:ERP» от более простых конфигураций заключается в колоссальном объеме метаданных, сложных аналитических разрезах, тяжелых запросах и длинных цепочках транзакций при проведении документов. Операции расчета себестоимости, распределения затрат и закрытия месяца выполняются платформой в один поток. Это означает, что для критически важных бизнес-процессов общая многоядерность процессора не имеет значения — важна исключительно производительность одного конкретного ядра, на котором выполняется поток вычислений.
Если на вашем сервере установлен многоядерный процессор с низкой базовой частотой (например, популярные серверные чипы линейки Intel Xeon E5-2640 со штатной частотой 2.40–2.60 GHz), то ERP неизбежно будет работать медленно. Программа просто не сможет загрузить все ядра одновременно, а одно ядро на такой частоте не справляется с обработкой гигантских массивов данных.
Рассмотрим по шагам комплекс мер, которые помогут оптимизировать производительность системы.
Перед тем как приступать к программным настройкам, необходимо убедиться, что аппаратная часть сервера работает в режиме максимальной производительности. По умолчанию большинство серверов поставляются с включенными энергосберегающими функциями, из-за которых процессор динамически снижает частоту при отсутствии равномерной многопоточной нагрузки.
Power Management или System Profile). Переведите его в режим High Performance (Максимальная производительность).C-States, C1E, а также технологии динамического снижения частоты, такие как Intel SpeedStep или Demand Based Switching. Это гарантирует, что процессор всегда будет работать на своей максимальной или турбо-частоте, не тратя драгоценные миллисекунды на «пробуждение» ядер при поступлении запросов от 1С.Использование устаревших интерфейсов дисков, таких как SCSI или классических механических SAS HDD даже в быстрых RAID-массивах, для баз данных ERP категорически недопустимо. ERP-система совершает миллионы мелких операций случайного чтения и записи (так называемые IOPS), с которыми физические жесткие диски не способны справиться из-за физических ограничений считывающих головок.
Рассмотрим правила организации дисковой подсистемы:
.mdf)..ldf). Пиковая скорость записи в лог транзакций напрямую влияет на время проведения документов.TempDB и временные файлы сервера 1С.Распространенная ошибка — развертывание всей инфраструктуры («всё в одном»): сервера приложений 1С, СУБД MS SQL Server, терминального сервера для пользователей и множества тестовых копий баз данных на одной физической машине без жесткого разграничения ресурсов.
Выясним, как правильно распределить оперативную память на сервере объемом 128 ГБ, чтобы процессы не мешали друг другу и операционная система не уходила в глубокий своп (swap):
rphost) будут постоянно сбрасывать данные в файл подкачки на диске, вызывая жесткие зависания интерфейса.Для настройки лимита памяти 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;
Для того чтобы СУБД эффективно обрабатывала запросы 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С для работы с временными таблицами. Для снижения конкуренции за распределение страниц памяти настройте её следующим образом:
TempDB должно быть равно количеству физических ядер процессора (но не более 8 файлов, если ядер больше). Если у вас 2 процессора по 8 ядер, создайте ровно 8 файлов данных.4. Включение мгновенной инициализации файлов (Instant File Initialization). Эта функция позволяет СУБД создавать и расширять файлы данных мгновенно, не тратя время на заполнение нового дискового пространства нулями. Это убирает секундные зависания системы в моменты, когда база данных или TempDB запрашивают у диска дополнительное место при росте.
Для включения откройте оснастку «Локальная политика безопасности» (secpol.msc) на сервере Windows -> Локальные политики -> Назначение прав пользователя. Найдите политику «Выполнение задач по обслуживанию томов» (Perform volume maintenance tasks) и добавьте в неё учетную запись, из-под которой запускается служба MS SQL Server. После этого перезапустите службу SQL Server.
После настройки оборудования и СУБД перейдем к оптимизации на уровне платформы «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-системы даже при больших объемах данных и высокой активности пользователей.