Работа с тяжелыми конфигурациями, такими как «1С:Комплексная автоматизация 2.5» (КА 2.5) или «1С:ERP», предъявляет высокие требования к серверному оборудованию и качеству настройки системного ПО. Часто стандартных процедур вроде «чистки кэша» или «реиндексации» оказывается недостаточно. Если система «дико тормозит» даже при малом количестве пользователей, проблему нужно искать на стыке аппаратной части, настроек СУБД и особенностей самой конфигурации. Проанализируем ситуацию по шагам и разберем, как выжать максимум производительности из вашего сервера.
Одной из главных причин низкой производительности в 1С является слабая однопоточная производительность процессора. Рассмотрим, почему это критично. Большинство тяжелых операций в 1С (проведение документов, расчет себестоимости, закрытие месяца) выполняются последовательно в один поток. Если ваш сервер обладает множеством ядер, но каждое из них работает на низкой частоте (например, 1.6–2.0 ГГц), система будет работать медленно, даже если общая загрузка процессора в мониторе ресурсов кажется низкой.
Проанализируем необходимые действия для оптимизации процессора:
C-States, Intel SpeedStep или AMD Cool'n'Quiet. Также рекомендуется протестировать работу с отключенным Hyper-Threading: в некоторых случаях для 1С это дает прирост скорости на 10–15% за счет того, что физическое ядро не делится на два логических потока.TempDB и журнал регистрации 1С стоит разносить по разным физическим накопителям, чтобы операции записи не конкурировали друг с другом.Стандартная установка MS SQL Server «из коробки» не подходит для высоконагруженных баз 1С. Рассмотрим ключевые параметры, которые могут кардинально изменить ситуацию с «тормозами».
Параметр MAXDOP (Max Degree of Parallelism): Для баз 1С крайне рекомендуется установить значение 1. Посмотрим на логику: SQL Server пытается распараллелить выполнение одного запроса на несколько ядер. Однако из-за специфики построения запросов платформой 1С это часто приводит к возникновению взаимных блокировок (deadlocks) и ожиданий на ресурсах CXPACKET. Установка значения 1 заставляет сервер выполнять один запрос в рамках одного ядра, что в 99% случаев ускоряет работу 1С.
Мгновенная инициализация файлов (Instant File Initialization): Проверим, включена ли эта опция. Она позволяет SQL Server мгновенно расширять файлы базы данных без заполнения их нулями. Для этого учетной записи, под которой запущена служба SQL, нужно дать право Выполнение задач по обслуживанию томов (Perform volume maintenance tasks) в локальных политиках безопасности Windows.
Настройка базы TempDB: Системная база TempDB — это «песочница» для временных таблиц, которые 1С использует постоянно. Разберем рекомендации по её настройке:
TempDB должно соответствовать количеству ядер процессора (но обычно не более 8). Это исключает узкое место при записи в системные страницы.Проанализируем параметры рабочих процессов 1С. Если на сервере запущен только один процесс rphost, он может стать «бутылочным горлышком», так как вынужден обрабатывать все запросы пользователей и фоновые задания одновременно.
Рассмотрим шаги по оптимизации серверного кластера:
TEMP и TMP для службы 1С на самый быстрый доступный диск (например, RAM-диск или выделенный NVMe)..lgp), это создает огромную нагрузку на файловую систему при каждом событии. Рекомендуется перевести журнал регистрации в новый формат (SQLite, расширение .lgd).Конфигурация КА 2.5 активно использует механизм разграничения прав доступа на уровне записей (RLS). В новых версиях реализован так называемый «Производительный режим» RLS. Разберем, в чем может быть подвох.
При включении этого режима система создает специальные ключи доступа в фоновом режиме. Если сервер «старенький», как указано в ситуации автора, процесс обновления этих ключей может занимать все свободные ресурсы. Проанализируем состояние регистра Обновление ключей доступа к данным. Если там скопились миллионы записей, которые не обрабатываются, работа пользователей в системе будет крайне медленной, так как при каждом запросе к данным система будет пытаться вычислить права «на лету».
Для решения этой проблемы попробуйте:
Обновление ключей доступа.Иногда причина «тормозов» кроется не в сервере, а в конкретном коде или отсутствии индексов. Посмотрим на пример того, как можно выявить проблемное место с помощью встроенного замера производительности.
Рассмотрим алгоритм действий:
Если вы видите, что львиная доля времени уходит на один и тот же запрос, проанализируйте его текст. Часто в КА 2.5 проблемы возникают из-за неоптимальных соединений с виртуальными таблицами (например, получение остатков внутри цикла). Рассмотрим схематичный пример исправления кода:
// ПЛОХО: Запрос в цикле для каждой строки документа
Для Каждого Строка Из Товары Цикл
Остаток = ПолучитьОстатокНаСкладе(Строка.Номенклатура);
КонецЦикла;
// ХОРОШО: Выгрузка всех товаров во временную таблицу и получение остатков одним запросом
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура ПОМЕСТИТЬ ВТ_Товары ИЗ &ТаблицаТоваров;
|ВЫБРАТЬ Т.Номенклатура, ЕСТЬNULL(Остатки.КоличествоОстаток, 0)
|ИЗ ВТ_Товары КАК Т
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ ВТ_Товары)) КАК Остатки";
Для КА 2.5 критически важно регулярное обслуживание на уровне SQL Server. Статистика в SQL Server должна быть всегда актуальной, иначе оптимизатор будет выбирать неверные планы выполнения запросов.
Рекомендуется настроить Maintenance Plan, который будет выполнять следующие задачи:
Подводя итог, отметим, что для стабильной работы 1С:КА 2.5 требуется комплексный подход. Начните с настройки электропитания и параметров процессора, затем оптимизируйте MS SQL Server (особенно MAXDOP и TempDB), и только после этого переходите к анализу кода и механизмов RLS. Если сервер физически устарел (частота ниже 2.5–3.0 ГГц), то даже идеальная программная настройка может не дать желаемого комфорта в работе.