Тормозит 1С на сервере: где искать причину и что настроить
Содержание
Утром бухгалтеры жалуются: проведение документа висит минуту, отчёт собирается десять. Первым делом хочется докупить памяти. Не спешите: в большинстве случаев сервер упирается не в железо, а в настройки СУБД, диск или одну тяжёлую операцию. Чтобы ускорить 1С на сервере, нужно сначала найти узкое место, а уже потом крутить параметры.
Порядок такой: замерить, где теряется время, поправить СУБД, затем кластер серверов , диски, обслуживание базы и сеть. Начинайте сверху вниз. Каждый следующий шаг имеет смысл, только если предыдущий не снял проблему.
Любые изменения настроек СУБД и кластера делайте вне рабочего времени и после резервной копии. Перед правкой параметров сохраните их старые значения — откат без записи превращается в угадайку.
Диагностика: найти узкое место раньше, чем что-то менять
Сначала выясните, что именно тормозит и у кого. Ответ «всё медленно» — не диагноз.
Три вопроса пользователям
- 🐢 Медленно всё или одна операция (проведение, закрытие месяца , конкретный отчёт)?
- 🕒 Тормозит всегда или в определённые часы?
- 👤 Медленно у всех или у одного рабочего места?
Если медленно у одного человека — смотрите его компьютер и сеть, сервер ни при чём. Если в одно и то же время — ищите регламентные задания, бэкап или антивирусную проверку.
Что смотреть на самом сервере
Откройте монитор ресурсов Windows или htop в Linux и посмотрите на четыре показателя во время тормозов:
| Показатель | Тревожное значение | Что это значит |
|---|---|---|
| Загрузка процессора | стабильно выше 80% | не хватает ядер или тяжёлые запросы |
| Свободная память | почти нет, идёт активный своп | нехватка ОЗУ |
| Очередь к диску | постоянно больше 2 на диск | диск не успевает |
| Загрузка сети | близко к предельной | узкий канал до клиентов |
Загрузка CPU у процесса СУБД говорит о тяжёлых запросах. Загрузка у rphost — о нагрузке на серверный код 1С. Дисковая очередь указывает на накопитель.
Инструменты самой 1С
- 📊 Консоль администрирования серверов 1С показывает сеансы, соединения и блокировки.
- 🔍 Технологический журнал фиксирует долгие вызовы и ожидания на блокировках. Включайте его на короткое время и с отбором по длительности, иначе журнал сам забьёт диск.
- ⏱ Замеры производительности (подсистема оценки производительности) дают сводку по ключевым операциям в динамике. Это лучший способ понять, стало ли лучше после правок.
Заведите одну «контрольную» операцию — например, проведение типового документа или формирование оборотно-сальдовой ведомости за месяц. Замерьте её секундомером до и после каждого изменения. Без цифр вы не узнаете, помогла правка или нет.
Как читать результат
После замеров разложите находки по трём корзинам:
- 🧱 Инфраструктура — упор в CPU, память, диск или сеть. Лечится настройками сервера и железом.
- 🗄 СУБД — долгие запросы при свободных ресурсах 1С. Лечится статистикой, индексами и параметрами сервера баз данных.
- 💻 Код и данные — медленная одна операция, а остальное летает. Здесь нужны оптимизация запроса или чистка данных.
Так вы не потратите неделю на настройку кластера, когда виноват один запрос в доработанном отчёте.
Настройка СУБД: что чаще всего даёт прирост
База данных — самое частое узкое место. 1С отправляет в СУБД огромное число мелких запросов, и от настроек сервера баз данных зависит больше, чем от настроек самой 1С.
Microsoft SQL Server
Главные параметры:
- Максимальный объём памяти (
max server memory). Если оставить по умолчанию, SQL Server заберёт всю память и задушит операционную систему и кластер 1С. Оставьте системе и рабочим процессам 1С запас, на отдельном сервере СУБД — хотя бы 10–15% памяти. - Файлы
tempdb. Создайте несколько файлов одинакового размера, по числу ядер, но не больше восьми. Держите их на быстром диске. - Модель восстановления. Для базы с ежедневной полной копией и редкими логами хватит простой модели. Если нужны копии журнала транзакций для восстановления на момент времени, включите полную и обязательно настройте их резервирование — иначе журнал будет расти без конца.
- Автоприрост файлов. Задайте фиксированный шаг в сотни мегабайт, а не проценты. Мелкие частые приросты тормозят запись.
- Параллелизм. Для типовых нагрузок 1С обычно ограничивают степень параллелизма запроса до 1, чтобы один тяжёлый запрос не занимал все ядра.
PostgreSQL
Для 1С нужна сборка, с которой она совместима: либо сборка, рекомендованная фирмой 1С, либо Postgres Pro. Обычный дистрибутив из репозитория часто работает хуже. Ключевые параметры в postgresql.conf:
shared_buffers = 25% от ОЗУ
effective_cache_size = 50-75% от ОЗУ
work_mem = 16MB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.9
Эти значения — отправная точка для сервера СУБД, которому отдана вся машина. Подгоните их под свою нагрузку и проверьте замером.
Обслуживание: статистика и индексы
Без обновления статистики планировщик строит плохие планы, и запросы замедляются. Настройте регламентные задания:
- 🔄 обновление статистики — ежедневно или как минимум раз в неделю;
- 🧱 перестроение или реорганизация сильно фрагментированных индексов — раз в неделю;
- 💾 проверка целостности и резервное копирование — по регламенту.
На PostgreSQL регулярно запускайте VACUUM и ANALYZE. Автовакуум по умолчанию часто не успевает на больших таблицах 1С.
Кластер серверов 1С:Предприятия: рабочие процессы и память
Кластер распределяет нагрузку между рабочими процессами rphost. Неудачные настройки приводят к тому, что один процесс захлёбывается, а остальные простаивают.
Откройте консоль администрирования серверов, раскройте кластер, затем Рабочие серверы и откройте свойства нужного сервера. Здесь стоит посмотреть:
| Параметр | На что влияет | Как подобрать |
|---|---|---|
| Количество рабочих процессов | распределение нагрузки | не больше числа ядер; на 4–8 ядрах хватает 2–4 |
| Количество соединений на процесс | равномерность | значение по умолчанию подходит для большинства |
| Количество информационных баз на процесс | изоляция баз | для нескольких крупных баз уменьшите, чтобы одна не мешала другой |
| Допустимый объём памяти рабочих процессов | перезапуск при утечках | задайте предел чуть ниже реального запаса ОЗУ |
| Интервал перезапуска процессов | профилактика утечек | например, раз в сутки, ночью |
Что учесть
- 🧠 Используйте 64-разрядную версию сервера 1С. 32-разрядная ограничена по памяти и быстро упирается в потолок.
- 🔁 Включите перезапуск рабочих процессов по расписанию вне рабочих часов. Это не лечит причину, но спасает от накопленных утечек памяти.
- 🏢 Не размещайте на одном сервере терминальные сессии, кластер и СУБД, если нагрузка серьёзная. Вынесите СУБД на отдельную машину.
- 🔒 Следите за долгими блокировками. Если сеанс держит блокировку минутами, ищите его в консоли и разбирайтесь, чем он занят.
Режимы блокировок и управляемые блокировки
Если база работает в режиме совместимости со старыми блокировками, транзакции дольше ждут друг друга. Перевод на управляемый режим блокировок (на уровне конфигурации) заметно снижает конфликты. Для типовых конфигураций это уже настроено. Если у вас доработанная конфигурация, проверьте режим управления блокировками у разработчика.
Диски и железо: как ускорить работу 1С на сервере физически
Если замеры показали упор в диск, программными настройками не обойтись.
- 💽 Переходите на SSD, лучше NVMe. Разница между HDD и NVMe для базы 1С — на порядок по случайному чтению.
- 🗂 Разделите по разным дискам файлы данных, журнал транзакций и
tempdb. Журнал пишется последовательно, данные читаются случайно, смешивать их невыгодно. - ⚡ В Windows переключите схему электропитания на «Высокая производительность». Экономный режим снижает частоту процессора и добавляет задержки.
- 🧮 Для процессора важна высокая частота одного ядра. 1С плохо распараллеливается, поэтому восемь быстрых ядер часто лучше двадцати медленных.
- 🛡 Добавьте исключения в антивирус для каталогов данных СУБД и рабочих файлов кластера. Постоянная проверка каждого обращения к файлам базы заметно замедляет работу.
Виртуальная машина: проверьте, что ей выделено фиксированное число ядер и память без «раздувания» (ballooning). Соседние виртуалки на том же хосте тоже могут отнимать ресурсы.
Сколько памяти нужно
Ориентиров на все случаи нет, но для примера: на 20–30 одновременных пользователях типовой конфигурации обычно закладывают порядка 32–64 ГБ ОЗУ на сервер с кластером и СУБД вместе. Лучше опирайтесь на свои замеры: посмотрите, сколько реально занимают rphost и процесс СУБД в пик.
Обслуживание информационной базы: чистка, которая реально помогает
База разрастается, и со временем все операции замедляются. Регулярный уход возвращает скорость.
Регламентные операции
- Обновление статистики и перестроение индексов — см. раздел про СУБД. Это самая полезная операция.
- Удаление помеченных объектов. Группа в меню администрирования: удаляйте помеченные на удаление документы и элементы справочников. Перед этим убедитесь, что копия сделана.
- Тестирование и исправление информационной базы в Конфигураторе. Запускайте при подозрении на повреждение, не по расписанию каждый день.
- Свёртка базы — когда накопились годы документов и работа явно замедлилась. Это серьёзная процедура: делайте её на копии и согласуйте с главным бухгалтером, что можно потерять в детализации прошлых периодов.
Регламентные задания
Загляните в список регламентных заданий. Часто оказывается, что в одно и то же время запускается несколько тяжёлых заданий: загрузка курсов, пересчёт итогов, обмены. Разнесите их по времени и отключите ненужные.
Итоги и движения
Если медленно формируются отчёты по остаткам и оборотам, проверьте режим использования итогов регистров и пересчёт итогов. Для крупных регистров бывает полезно перенести дату разделения итогов ближе к текущему периоду. Меняйте эти параметры с осторожностью и на копии базы.
Лишнее в конфигурации
Доработки часто содержат неэффективные запросы: запрос в цикле, выборка без отбора, обращение к виртуальной таблице без параметров. Найдите их технологическим журналом или замерами и отдайте программисту. Такая правка нередко даёт больше, чем любая настройка железа.
Сеть и клиентские места
Сервер может быть идеальным, а пользователи всё равно жалуются. Тогда смотрите канал.
- 🌐 Проверьте задержку до сервера. Для толстого клиента важна не только пропускная способность, но и время отклика: десятки миллисекунд на каждое обращение накапливаются в тысячи вызовов.
- 🏠 Удалённым сотрудникам лучше подключаться через терминальный сервер или веб-клиент, а не гонять толстый клиент по медленному каналу от домашнего интернета.
- 🧹 Очистите кэш клиента, если у пользователя странно ведут себя формы. Для этого запускают клиент с ключом
/ClearCache. - 🖥 На рабочих местах проверьте свободное место на диске и память. Тонкий клиент с 4 ГБ ОЗУ, в которой уже живёт браузер и почта, тоже тормозит.
- 🔌 Проверьте кабель и порт на коммутаторе: ошибки на линии бывают причиной «плавающих» тормозов у одного человека.
Если не помогло
Когда все пункты выполнены, а скорость прежняя, остаются три варианта:
- 📈 Масштабировать железо: вынести СУБД на отдельный сервер, добавить диск или ядра.
- 🧑💻 Заказать профилирование доработок и оптимизацию запросов у специалиста.
- 🧩 Разделить базы по нагрузке: тяжёлую аналитику вынести в отдельную копию.