Медленный сервер 1С: от диагностики до тюнинга SQL и железа

· 9 мин

Содержание

Сервер 1С ускоряют в таком порядке: сначала замер, потом диск и память, затем настройки СУБД, после них кластер 1С, и только в конце код конфигурации. Начинать с покупки процессора нельзя: в большинстве случаев узкое место сидит в дисках, блокировках или параметрах SQL Server, а не в мощности ядер.

Ниже порядок работ для клиент-серверной базы на Windows Server и Microsoft SQL Server. Каждый шаг можно проверить цифрой до и после. Если изменение не дало эффекта, верните прежнее значение и идите дальше.

Сначала измерьте: где сервер 1С тормозит на самом деле

Жалоба «всё медленно» ничего не говорит. Нужно понять, какая именно операция тормозит и чем сервер занят в этот момент.

Что смотреть на сервере

Откройте монитор ресурсов Windows и снимите показатели в часы жалоб:

  • 💽 Диск: задержка чтения и записи. Норма для данных и логов SQL — единицы миллисекунд, 20 мс и выше уже плохо.
  • 🧠 Память: сколько свободно, есть ли активная подкачка.
  • ⚙️ Процессор: загрузка по ядрам. Одно ядро в 100% при остальных свободных — признак однопоточной операции или MAXDOP.
  • 🌐 Сеть: потери и задержки между клиентами, сервером 1С и SQL.

Что смотреть в самой 1С

Для замера конкретных операций есть «Центр управления производительностью» и встроенный замер производительности с оценкой APDEX. Он показывает ключевые операции пользователей (проведение документа, формирование отчёта) и их время. Из этого вы увидите: тормозит всё или два-три сценария.

Для разбора причин на уровне запросов включайте технологический журнал: файл logcfg.xml в каталоге conf платформы. Полезные события — DBMSSQL (медленные запросы к СУБД), TLOCK и TTIMEOUT (блокировки и таймауты), EXCP (исключения). Включайте на короткое время и с фильтром по длительности, иначе журнал сам съест диск.

Диагностика: выберите симптом

Настройка Windows Server под нагрузку 1С

Операционная система редко даёт большой выигрыш, но три настройки делают заметную разницу.

  1. Схема электропитания. Выберите «Высокая производительность». На плане «Сбалансированная» процессор сбрасывает частоту, и однопоточные операции 1С выполняются медленнее.
  2. Антивирус. Добавьте в исключения каталоги данных SQL Server (файлы .mdf, .ldf, .ndf), каталог кластера 1С (srvinfo) и процессы ragent.exe, rmngr.exe, rphost.exe, sqlservr.exe. Построчная проверка файла базы при каждом обращении может замедлить работу в разы.
  3. Файл подкачки. Не отключайте его. Задайте фиксированный размер, чтобы он не фрагментировался и не менял размер на ходу. Для сервера с большим объёмом памяти хватает умеренного значения, ориентир — несколько гигабайт.

Дополнительно:

  • 🚫 Отключите индексирование дисков с данными.
  • 🚫 Не держите на сервере 1С браузеры, почту и лишние службы.
  • 🔄 Устанавливайте обновления Windows в окно обслуживания, а не по расписанию «когда придётся».

Если сервер виртуальный, проверьте, что хост не перегружен по процессору (метрика ожидания vCPU) и что у виртуальной машины включена статическая память, без «баллонинга». Виртуализация с динамической памятью для SQL Server даёт случайные провалы.

Параметры кластера серверов 1С: процессы, память, соединения

Кластер управляет тем, сколько рабочих процессов (rphost) запущено и сколько сеансов на каждый приходится. Настройки находятся в консоли администрирования серверов 1С: рабочие серверы кластера, их свойства.

Рабочие процессы

Ключевые параметры сервера:

ПараметрНа что влияетОриентир
Количество рабочих процессовПараллельность обработкиОбычно 1 процесс на 4-8 ядер, не больше числа ядер
Количество соединений на рабочий процессСколько сеансов обслуживает один rphostОколо 50-100 пользователей на процесс
Допустимый объём памяти рабочих процессовПорог, после которого процесс перезапускаетсяНе менее 70-80% свободной памяти под 1С, в сумме по процессам
Временной интервал превышения допустимого объёмаКак долго процесс может превышать порогОставляйте по умолчанию, пока нет проблем

Один процесс на сотню сеансов означает, что падение одного rphost оборвёт всех. Слишком много мелких процессов — лишние накладные расходы. Золотая середина подбирается на практике: начните с трёх-четырёх процессов на среднюю нагрузку.

Платформа и лицензии

  • Используйте актуальную рекомендованную платформу 8.3 для вашей конфигурации. В новых релизах платформа оптимизирована лучше, а часть проблем с блокировками закрыта.
  • Серверный rphost должен быть 64-битным. 32-битный процесс упирается в лимит памяти.
  • Следите за тем, чтобы клиентские сеансы с типом «толстый клиент» не нагружали сервер лишней работой: тонкий и веб-клиент дешевле.

Если у базы сотни сеансов, а пользователи ходят в основном в справочники и документы, увеличьте число соединений на процесс. Если работают тяжёлые отчёты и закрытие месяца, наоборот, уменьшите: тяжёлые операции не должны мешать соседям на том же процессе.

Тюнинг Microsoft SQL Server для баз 1С

SQL Server по умолчанию настроен «универсально», а 1С — специфичная нагрузка: много коротких транзакций и часто плохие по форме запросы. Главные настройки задаются через свойства сервера в SSMS.

Память

Задайте max server memory, иначе SQL займёт почти всю память и оставит систему без неё. Пример для сервера на 64 ГБ, где живут и SQL, и кластер 1С:

  • 🧩 ОС и служебные процессы: 8 ГБ
  • 🧩 Кластер 1С (рабочие процессы): 16 ГБ
  • 🧩 SQL Server: оставшиеся 40 ГБ (64 − 8 − 16)

Если SQL стоит на отдельной машине, оставьте ОС 4-6 ГБ, остальное отдайте SQL. Дополнительно можно включить право «Закрепление страниц в памяти» для учётной записи службы SQL Server — это защищает буферный кэш от вытеснения.

Параллелизм

Для баз 1С стандартная рекомендация такая:

EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1; RECONFIGURE;
EXEC sp_configure 'cost threshold for parallelism', 50; RECONFIGURE;

MAXDOP = 1 отключает распараллеливание отдельного запроса. Для типичной нагрузки 1С это выгоднее: параллельные планы дают много ожиданий и нестабильное время. Если у вас регулярно выполняются тяжёлые аналитические запросы, проверьте эффект на тестовой копии.

Tempdb

1С активно использует временные таблицы, поэтому tempdb нагружается сильно:

  • создайте несколько файлов данных tempdb одинакового размера, по числу ядер, но не больше 8;
  • задайте размер заранее и приращение в мегабайтах, не в процентах;
  • держите tempdb на самом быстром диске.

Модель восстановления и файлы

  • Для рабочей базы обычно стоит полная модель восстановления, но только при регулярных резервных копиях журнала. Иначе файл .ldf растёт бесконечно.
  • Приращение файлов данных и журнала задавайте фиксированным, например 512 МБ-1 ГБ. Мелкие приращения вызывают частые остановки на расширение.
  • Включите мгновенную инициализацию файлов (право «Выполнение задач обслуживания тома» для учётной записи SQL) — расширение данных станет почти мгновенным.

Диск, память и процессор: что закупать под сервер 1С

Если замеры показали, что упёрлись в железо, приоритеты такие.

  1. Дисковая подсистема. Это почти всегда первое. SSD или NVMe вместо HDD ускоряют проведение и отчёты в разы. Минимум — отдельные тома под данные, журнал транзакций и tempdb. RAID 10 для данных надёжнее и быстрее, чем RAID 5 при большом числе записей.
  2. Оперативная память. Чем больше база помещается в буферный кэш SQL, тем меньше чтения с диска. Ориентир: для базы в 100-200 ГБ и сотни пользователей разумно иметь 64-128 ГБ на SQL и отдельно память под 1С.
  3. Процессор. Для 1С важнее высокая тактовая частота ядра, чем их число: многие операции однопоточные. Лучше 8 ядер по 3,5 ГГц, чем 24 по 2,2 ГГц.
  4. Сеть. Гигабитный канал между серверами 1С и SQL достаточен для большинства, но задержка должна быть ниже миллисекунды.

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

Ориентировочно, ускорение от замены HDD на SSD для проведения документов и отчётов бывает от двух до десяти раз в зависимости от нагрузки. Это самое выгодное вложение на единицу стоимости.

Оптимизация конфигурации и кода 1С

Если сервер настроен, а операция всё равно медленная, причина в самой конфигурации. Это работа разработчика, но администратор должен уметь её локализовать.

Что искать:

  • 🐌 Запросы в цикле. Обращение к базе на каждой итерации вместо одного запроса со всеми данными.
  • 🐌 Обращение через точку к реквизитам ссылок в больших выборках — лишние соединения в запросе.
  • 🐌 Отсутствие индексов по полям отбора в частых запросах.
  • 🐌 Избыточные блокировки. Блокировка всей таблицы вместо ключа, долгие транзакции с интерактивными вопросами внутри.
  • 🐌 Тяжёлые подписки и регламентные задания, которые идут в рабочее время.

План действий:

  1. По технологическому журналу найдите самые длительные запросы события DBMSSQL.
  2. Сопоставьте с кодом, который их вызывает.
  3. Проверьте план запроса в SQL Server и наличие индексов.
  4. Исправьте код или добавьте индекс и повторите замер.

Типовые конфигурации 1С оптимизированы вендором. Больше всего проблем в доработанных конфигурациях и самописных отчётах. Начинайте с них.

Регулярное обслуживание: чтобы сервер снова не замедлился

Скорость падает не внезапно, а накапливается. Настройте регламент.

Что делать по расписанию

ОперацияКак частоЗачем
Обновление статистикиЕжедневно, ночьюОптимизатор SQL строит планы по свежим данным
Перестроение или реорганизация индексовРаз в неделюУбирает фрагментацию
Резервная копия журнала транзакцийКаждые 15-60 минутЖурнал не растёт, есть точка восстановления
Полная резервная копияЕжедневноСтраховка
Очистка технологического журнала и логовЕженедельноНе заполнять диск
Проверка свободного местаЕжедневноОстановка при нуле места

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

Внутри 1С

  • 🗂️ Периодически сворачивайте и чистите старые данные по регламенту предприятия.
  • 🗂️ Следите за размером регистров и журнала регистрации, он растёт быстро.
  • 🗂️ Проверяйте, чтобы ночные регламентные задания не пересекались с копированием.
Перед обращением к разработчикам или в поддержку
Выполнено: 0 / 5

Частые вопросы

Сколько оперативной памяти нужно серверу 1С?
Зависит от числа пользователей и размера базы. Для 50-100 одновременных сеансов обычно хватает 32-64 ГБ на всё вместе, если SQL на той же машине. Проверяйте показатели реального использования.
Что даёт переход с HDD на SSD?
Чаще всего самое заметное ускорение: проведение документов и формирование отчётов ускоряются в разы за счёт скорости случайного чтения и записи.
Можно ли держать SQL Server и кластер 1С на одном сервере?
Можно для небольших баз до нескольких десятков пользователей. С ростом нагрузки их разносят: так проще ограничить память и изолировать сбои.
Почему после перезагрузки сервера всё работает быстрее, а к вечеру тормозит?
Кэш SQL и рабочие процессы 1С накапливают память, а потом начинается подкачка. Проверьте лимиты памяти и утечки в рабочих процессах.
Как понять, что тормозит именно сервер, а не клиентский компьютер?
Сравните время операции на нескольких рабочих местах и в сеансе на самом сервере. Если везде одинаково медленно, виноват сервер или код.