Почему сервер 1С не использует все ядра процессора и как это исправить?

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

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

Почему 1С «не видит» все ядра процессора?

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

Если одна задача выполняется в рамках одного потока, она физически не может «задействовать» сразу 12 или 32 ядра. Она целиком загрузит только одно ядро, а остальные будут простаивать или заниматься фоновыми системными процессами. Именно поэтому вы видите загрузку процессора на уровне 25% при 4 ядрах или значительно меньше при 12-16 ядрах.

Ограничения лицензий ПРОФ и роль КОРП

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

В этом случае решением является переход на уровень КОРП. Лицензии уровня КОРП снимают ограничение на использование ядер и позволяют гибко настраивать сервер для работы с большими объемами данных и большим количеством одновременных сеансов пользователей.

Практические шаги по оптимизации нагрузки

Чтобы заставить сервер работать эффективнее, разберем пошагово, что можно предпринять в рамках существующих настроек:

  1. Анализ рабочих процессов (rphost): В консоли кластера серверов 1С можно настроить количество рабочих процессов. Если у вас много пользователей, система может автоматически запускать несколько rphost. Каждый такой процесс — это отдельный поток, который может занять свое ядро. Проверьте настройки кластера и при необходимости увеличьте количество процессов, если оперативная память вашего сервера это позволяет.
  2. Настройка фоновых заданий: Тяжелые операции, такие как обновление статистики, обмен данными или регламентные задания, стоит разносить по времени. Если они запускаются одновременно, они создают конкуренцию за ресурсы, что ведет к ожиданию данных, а не к активным вычислениям.
  3. Работа с дисковой подсистемой: Часто низкая загрузка процессора — это признак того, что процессор не «считает», а «ждет». Если база данных (MS SQL или PostgreSQL) медленно читает данные с диска, процессор простаивает. Проанализируйте скорость работы дисковой подсистемы с помощью счетчиков производительности.
  4. Оптимизация кода: Если проблема возникает при выполнении конкретной обработки, возможно, код написан неоптимально. Посмотрите в технологический журнал на наличие событий DBMSSQL или TLOCK. Это подскажет, что система ожидает ответа от базы данных или стоит в блокировках, что требует доработки самого алгоритма 1С.

Нужно ли пытаться «распараллелить» всё?

Попытка принудительно заставить 1С использовать все ядра процессора для одной задачи (например, для одного запроса) через программные методы практически невозможна без глубокой переработки конфигурации. Основной упор в оптимизации стоит делать на:

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

← На главную