К статье
Практический материал

Администрирование · 10 мин

Как ускорить сервер 1С: диагностика и оптимизация

Практические способы ускорить сервер 1С: настройка СУБД, кластера, оборудования, регламентные задания и индексы. Пошаговая диагностика и типичные ошибки.

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

Типичные симптомы проблемы: долгое открытие документов и отчётов, зависания при проведении, очереди фоновых заданий, жалобы пользователей в часы пик. Каждый симптом указывает на свой класс причин, и методика диагностики различается. Ниже — практическая последовательность действий: от замера текущего состояния до настройки оборудования и регламентного обслуживания.

Большинство операций описано для связки «1С:Предприятие + MS SQL Server или PostgreSQL», но общие принципы применимы к любой СУБД. Все изменения на боевом сервере выполняйте только после резервного копирования базы.

Диагностика: найдите узкое место до изменений

Оптимизация без замеров — главная ошибка администраторов. Начните со сбора базовых метрик в часы пиковой нагрузки: загрузка процессора, объём свободной памяти, дисковая очередь и сетевые задержки между сервером 1С и сервером СУБД. В Windows используйте Performance Monitor (счётчики Processor, Memory, PhysicalDisk, MSSQL), в Linux — iostat, vmstat, top.

Ключевой инструмент для анализа запросов — технологический журнал 1С (ТЖ). Включите сбор событий DBMSSQL/DBPOSTGRS с длительностью и события TLOCK и TDEADLOCK. Это покажет, какие запросы выполняются дольше всего и где возникают блокировки. Дополнительно используйте консоль запросов и план запроса в СУБД: дорогие операции (Table Scan, отсутствие индексов) видны сразу.

CPU постоянно выше 80–90%Процессор — узкое место

Какие процессы грузят: rphost, sqlservr/postgres или сторонние

Свободной памяти почти нет, растёт swapНехватка RAM

Настройки max memory у СУБД и лимиты рабочих процессов кластера

Высокая дисковая очередь (avg. disk queue > 2)Медленная дисковая подсистема

Тип дисков, размещение базы и журналов, RAID-контроллер

Длительные ожидания блокировок в ТЖПроблема в коде и конкуренции

События TLOCK, TDEADLOCK, типовые конфликтующие операции

Оптимизация оборудования и размещения компонентов

Три аппаратных фактора дают основной эффект. Первый — оперативная память: СУБД должна кэшировать рабочий набор данных в RAM. Если база весит 100 ГБ, а памяти на сервере СУБД 16 ГБ, диски будут загружены постоянно. Ориентир простой: чем больше данных помещается в буферный кэш, тем меньше физических чтений.

Второй фактор — диски. База данных и журнал транзакций должны лежать на SSD или NVMe; размещение активной базы на HDD — типичная причина медленной работы. Журнал транзакций и файлы данных желательно разнести на разные физические устройства, так как их нагрузочные профили различаются (последовательная запись против случайного доступа).

Третий фактор — сеть и размещение служб. Сервер 1С и сервер СУБД должны быть связаны каналом минимум 1 Гбит/с без потерь пакетов. Для небольших баз (до нескольких десятков пользователей) допустимо размещение кластера 1С и СУБД на одной машине — это убирает сетевые задержки, но требует грамотного разделения памяти между процессами.

Настройка СУБД: главный источник ускорения

В MS SQL Server проверьте параметр max server memory: оставьте операционной системе и другим службам достаточный запас, остальное отдайте SQL Server. Установите модель восстановления базы по потребностям: для многих баз достаточно Simple, если нет требований к восстановлению на произвольный момент времени — это снижает нагрузку на журнал транзакций.

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

В PostgreSQL проверьте параметры shared_buffers (обычно 20–25% от RAM), effective_cache_size, work_mem и настройте autovacuum — для баз 1С с интенсивными обновлениями стандартных настроек автовакуума часто недостаточно, таблицы раздуваются, и запросы деградируют. Контролируйте размер таблиц и долю «мёртвых» строк.

Порядок настройки обслуживания СУБД
  1. 1
    Сделайте полную резервную копию базы и проверьте её восстановление на тестовом стенде
  2. 2
    Настройте ежедневное обновление статистики в нерабочее время
  3. 3
    Настройте еженедельную реиндексацию или перестроение фрагментированных индексов
  4. 4
    Включите мониторинг: длительные запросы, блокировки, рост базы и журнала
  5. 5
    Через неделю сравните время выполнения типовых операций с исходными замерами

Настройка кластера серверов 1С

Рабочие процессы rphost обслуживают пользовательские сеансы, и их количество влияет на стабильность. Один процесс на сотни сеансов — риск аварийного завершения с потерей работы пользователей; слишком много процессов — лишний расход памяти. Практичный ориентир — ограничить объём памяти на рабочий процесс (например, параметром «Допустимый объем памяти» в свойствах рабочего сервера) и включить автоматический перезапуск процессов при превышении лимита.

Проверьте настройки «Интервал перезапуска» и «Допустимый объем памяти» в консоли кластера: периодический перезапуск rphost очищает накопленные утечки памяти и фрагментацию. Делайте перезапуск в нерабочие часы, чтобы не обрывать сеансы пользователей.

Отдельно настройте менеджер кластера и вынос фоновых заданий. Тяжёлые регламентные операции (обмены данными, расчёт итогов, загрузка курсов) лучше выполнять на отдельном рабочем сервере или в часы минимальной нагрузки, чтобы они не конкурировали с интерактивной работой пользователей.

Оптимизация кода и структуры базы

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

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

Для очень больших таблиц рассмотрите регламентную чистку устаревших данных: помеченные объекты, неактуальные версии объектов, журналы регистрации за давние периоды. Журнал регистрации с миллионами записей замедляет не только просмотр, но и обновление конфигурации — настройте его ротацию и сокращение.

Типичные ошибки
01
Увеличение числа рабочих процессов без анализа памяти — сервер уходит в swap и работает ещё медленнее
02
Отключение autovacuum или обновления статистики «для экономии ресурсов» — планы запросов деградируют, таблицы раздуваются
03
Очистка журнала транзакций усечением без понимания модели восстановления — риск потери данных при сбое
04
Оптимизация запросов по догадке без технологического журнала — время тратится не на ту проблему
05
Выполнение реиндексации и обновления статистики в рабочие часы — паралич работы пользователей на время обслуживания

Регламентные операции и профилактика

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

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

Тестирование и исправление информационной базы (chdbfl для файловых, средства СУБД для клиент-серверных) запускайте при подозрении на повреждения, а не как регулярную процедуру — на больших базах это долгая операция, требующая монопольного доступа.

Контрольные точки

Как проверить результат

Время открытия и проведения типовых документов
Норма

Заметно сократилось относительно замеров до оптимизации

Тревожный признак

Не изменилось или выросло — узкое место не устранено

Свободная память и swap на сервере
Норма

Есть запас RAM, swap почти не используется

Тревожный признак

Постоянная активная подкачка — памяти по-прежнему не хватает

Дисковая очередь в часы пик
Норма

Средняя очередь близка к нулю, диски не загружены на 100%

Тревожный признак

Очередь стабильно высокая — нужны более быстрые диски или перенос нагрузки

Длительные запросы в технологическом журнале
Норма

Топ запросов по длительности сократился

Тревожный признак

Те же запросы с той же длительностью — проблема в коде или индексах

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

Сколько оперативной памяти нужно серверу 1С?

Универсальной цифры нет: ориентируйтесь на размер активной части базы и число пользователей. Практичный подход — выделить СУБД столько памяти, чтобы рабочий набор данных помещался в буферный кэш, плюс память под рабочие процессы rphost и ОС. Если swap активно используется в рабочее время — памяти недостаточно.

Поможет ли переезд на SSD, если база и так небольшая?

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

Как понять, что тормозит именно код конфигурации, а не железо?

Признак — избирательная медлительность: большинство операций работает нормально, а конкретные отчёты или проведения «висят». Подтверждается технологическим журналом: длительные запросы к определённым таблицам при нормальной загрузке CPU, памяти и дисков сервера.

Как часто нужно делать реиндексацию и обновление статистики?

Типовой режим для активно обновляемых баз: статистика — ежедневно, реиндексация — еженедельно, всё в нерабочие часы. Для баз с умеренной нагрузкой достаточно реже. Ориентир — фрагментация индексов и актуальность статистики, а не календарь сам по себе.

Стоит ли разносить сервер 1С и СУБД на разные машины?

Для небольших внедрений одна мощная машина часто эффективнее — нет сетевых задержек. Разнесение оправдано при большом числе пользователей, когда каждой службе нужны выделенные CPU и память, либо когда требуется отказоустойчивость кластера СУБД.

Опасно ли ограничивать память рабочих процессов rphost?

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

Итог

Что важно запомнить

Сначала замерьте, потом меняйте: основной прирост дают достаточный объём RAM, быстрые диски под базу и журналы, регулярное обновление статистики и реиндексация. Настройки кластера 1С и оптимизация запросов — следующий этап. Все изменения — только после резервной копии и с контрольными замерами результата.