Ситуация, когда информационная база 1С начинает «тормозить» при проведении даже небольших документов, является критической для бизнеса, особенно в конфигурации 1С:Управление торговлей 11 (УТ 11). При работе 100–120 пользователей нагрузка на сервер возрастает экспоненциально, и стандартных настроек «по умолчанию» становится недостаточно. Рассмотрим подробно, как диагностировать причины низкой производительности и какие шаги предпринять для оптимизации системы.
Проанализируем конфигурацию сервера, указанную в проблеме: Intel Xeon E5-1650 v4 (6 физических ядер, 12 потоков) и 120 активных пользователей. Для УТ 11, которая является одной из самых требовательных конфигураций на платформе 1С, такая нагрузка на данный процессор является предельной. Выясним почему:
Разберем также вопрос дисковой подсистемы. Для базы объемом 4 Гб, которая легко помещается в кэш оперативной памяти (128 Гб), критически важной остается скорость записи лога транзакций (.ldf) и работа с базой tempdb. Проверим, используются ли серверные SSD (NVMe или SAS SSD). Если база и логи лежат на обычных HDD, проведение документов всегда будет упираться в скорость дисковых операций в момент фиксации транзакции.
Одной из самых частых «невидимых» причин тормозов 1С является динамическое изменение частоты процессора. Рассмотрим, как это влияет на работу: процессоры Xeon v4 активно используют технологии энергосбережения. 1С генерирует «рваную» нагрузку — короткие, но интенсивные запросы. Если сервер находится в режиме «Сбалансированный», процессор не успевает мгновенно поднять частоту, что вызывает микро-фризы.
Что необходимо сделать:
Настройки SQL Server «из коробки» не подходят для эффективной работы 1С. Проанализируем ключевые параметры, которые системный администратор должен изменить в первую очередь:
Параметр MAXDOP (Maximum Degree of Parallelism): По умолчанию SQL Server пытается распараллелить выполнение одного тяжелого запроса на все доступные ядра. В архитектуре 1С это часто приводит к взаимным блокировкам (deadlocks). Рекомендуется установить значение MAXDOP = 1. Это заставит SQL выполнять один запрос в рамках одного потока, что стабильнее для 1С.
Параметр Cost Threshold for Parallelism: Если вы все же решили оставить MAXDOP отличным от 1, необходимо поднять порог стоимости параллелизма с 5 до 50. Это предотвратит попытки SQL распараллеливать мелкие запросы, которые быстрее выполнить в один поток.
Настройка TempDB: Это «черновик» SQL Server, куда 1С постоянно сбрасывает временные таблицы. Разберем шаги по оптимизации:
tempdb (обычно их количество должно соответствовать количеству ядер, но не более 8).tempdb, чтобы SQL распределял нагрузку равномерно.Если один и тот же документ проводится за разное время, это явный признак проблем с индексами и статистикой. Выясним, какие операции должны выполняться по расписанию в SQL Server:
DBCC FREEPROCCACHE, чтобы SQL перестроил планы запросов.Не будем действовать методом «тыка». Проанализируем ситуацию с помощью встроенных инструментов. Рассмотрим замер производительности:
Запустим 1С в режиме конфигуратора, откроем «Отладка» — «Замер производительности». Проведем проблемный документ и посмотрим, какая процедура занимает больше всего времени. Часто проблема кроется в ПриЗаписи или ОбработкаПроведения.
Если замер показывает, что время уходит на выполнение запросов к БД, используем SQL Profiler. Разберем основные события, которые стоит отслеживать:
RPC:CompletedSQL:BatchCompletedLock:DeadlockЭто позволит найти конкретный «тяжелый» запрос, который тормозит всю систему. Если в запросе фигурируют расширения, проверим их влияние, даже если автор утверждает, что они «не связаны с проведением».
Поскольку используется лицензия ПРОФ и база весит всего 4 Гб, проверим настройки в консоли администрирования серверов 1С:
Количество соединений на рабочий процесс: По умолчанию один процесс rphost может обслуживать множество соединений. При 120 пользователях имеет смысл создать 2–4 рабочих процесса вручную или настроить параметр «Количество ИБ на процесс». Это позволит более эффективно использовать оперативную память и снизит риск падения всех пользователей при сбое одного процесса.
Безопасный расход памяти: Проанализируем объем памяти, потребляемый процессами rphost. В случае утечек памяти (что случалось в версии 8.3.15), установим лимит перезапуска процессов, чтобы они не «съедали» все 128 Гб и не уходили в файл подкачки.
Проверим, не мешает ли антивирусное ПО работе сервера. Необходимо добавить в исключения (проверку «на лету»):
ragent.exe, rmngr.exe, rphost.exe, sqlservr.exe.*.mdf, *.ldf, *.ndf.srvinfo (где хранятся журналы регистрации и сеансовые данные) и временные папки пользователей AppData\Local\Temp.В завершение проанализируем сетевые протоколы. Если SQL и 1С на одном сервере, убедимся, что используется протокол Shared Memory. Это исключит накладные расходы сетевого стека при передаче данных между сервером приложений и сервером баз данных.