Как ускорить выполнение закрытия месяца в 1С и заставить программу использовать ресурсы процессора эффективнее?

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

Часто системные администраторы и разработчики сталкиваются с ситуацией, когда при выполнении тяжелых операций (например, закрытия месяца или восстановления последовательности) 1С потребляет ровно 25% ресурсов четырехъядерного процессора. При этом процесс может длиться часами, а общая загрузка системы кажется низкой. Разберем подробно, почему так происходит и какие шаги помогут нам ускорить работу программы.

Выясним причину ограничения: архитектура 1С и диспетчер задач

Проанализируем ситуацию с технической точки зрения. Основной клиентский процесс 1С (1cv8.exe) является однопоточным. Это означает, что в каждый конкретный момент времени одна вычислительная задача может выполняться только на одном логическом ядре процессора. Если ваш сервер оснащен 4 ядрами, то 100% мощности одного ядра составят ровно 25% от общей мощности процессора.

Важно понимать: то, что в диспетчере задач вы видите равномерную загрузку по 25% на каждом из четырех ядер, — это результат работы планировщика (шедулера) операционной системы Windows. Система перебрасывает поток с одного ядра на другое для равномерного распределения тепла, но суммарно задача всё равно использует ресурсы только одной вычислительной единицы. Ускорить выполнение такой задачи простым увеличением количества ядер невозможно — нам нужно увеличивать производительность каждого конкретного ядра или устранять задержки ввода-вывода.

Оптимизация дисковой подсистемы и использование RAM-диска

В файловом режиме работы 1С крайне чувствительна к скорости работы с временными файлами и файлом базы данных 1v8.1CD. Даже если Task Manager показывает низкую загрузку диска, это может быть обманчивым из-за большой очереди диска на коротких операциях записи.

Рассмотрим метод переноса временных файлов в оперативную память (RAM-диск). Это позволит сократить время отклика системы на операции чтения-записи промежуточных данных. Для реализации этого решения выполним следующие действия:

  1. Установим специализированное ПО для создания виртуального диска в оперативной памяти (на серверных ОС Windows можно воспользоваться встроенными средствами или сторонними драйверами типа ImDisk).
  2. Перенаправим переменные окружения TEMP и TMP пользователя, под которым запускается 1С, на созданный RAM-диск.
  3. Убедимся, что база данных расположена на быстром SSD или NVMe накопителе. Использование обычных HDD для файловой 1С в терминальном режиме недопустимо при больших объемах данных.

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

Проанализируем настройки оборудования. Серверные процессоры Xeon часто работают на пониженных частотах для экономии энергии. В условиях однопоточной нагрузки это критично.

Разберем шаги по настройке:

  1. В операционной системе Windows Server зайдем в "Панель управления" — "Электропитание" и установим схему "Высокая производительность" (High Performance).
  2. В настройках BIOS сервера отключим технологии энергосбережения: C-States, Intel SpeedStep. Это заставит процессор работать на максимальной частоте постоянно, не тратя время на "разгон" ядра при поступлении задачи.

Исключение влияния антивирусного ПО

Файловая база 1С постоянно производит запись в файл .1CD и создает множество мелких файлов .tmp. Если антивирус проверяет каждый такой файл в момент обращения, производительность падает в разы.

Настроим исключения в антивирусе или Windows Defender. Добавим в доверенную зону:

Техническое обслуживание файловой базы

Если закрытие месяца выполняется неоправданно долго (например, 10 часов), проанализируем состояние самой базы. Со временем в файловых базах накапливаются внутренние ошибки и фрагментация данных.

Выполним регламентные работы:

  1. Запустим утилиту chdbfl.exe (находится в папке bin платформы) для проверки физической целостности файла базы данных.
  2. В режиме "Конфигуратор" выберем пункт "Администрирование" — "Тестирование и исправление". Обязательно выберем пункты "Реиндексация таблиц" и "Сжатие таблиц". Сжатие удалит помеченные на удаление записи, которые физически всё еще занимают место и замедляют поиск.

Проверка программных ошибок платформы

Иногда причиной аномально долгой работы являются ошибки в коде платформы при работе с файловым движком. Например, известна ошибка 30167387, при которой запросы с оператором В (IN) в условиях выполняются крайне медленно, если они накладываются на индексированные поля.

Проанализируем код запросов в проблемных модулях. Если мы видим конструкцию типа:


Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи ГДЕ Номенклатура В (&СписокНоменклатуры) И Склад В (&СписокСкладов)";

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

Кардинальное решение: Переход на клиент-серверный вариант (SQL)

Если все вышеперечисленные методы не принесли желаемого ускорения, стоит признать, что файловый движок 1С исчерпал свои возможности. При переходе на SQL-версию (MS SQL Server, PostgreSQL):

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

← На главную