← На главную
При эксплуатации баз данных объемом свыше 100 ГБ на платформе 1С:Предприятие 8.3 с одновременной работой десятков пользователей часто возникают проблемы с производительностью: зависает подбор номенклатуры, медленно пробиваются чеки, а оперативная память на сервере полностью исчерпывается к середине рабочего дня. Разберем комплекс мер, которые помогут сбалансировать нагрузку, правильно распределить ресурсы сервера и повысить быстродействие системы.
Анализ архитектуры и перевод пользователей в терминальный режим
Конфигурация Комплексная автоматизация 1.1 функционирует в режиме обычных форм (толстый клиент). При запуске программы по локальной сети каждый клиентский компьютер выполняет значительную часть логики локально и передает огромные объемы необработанных данных между клиентом, сервером 1С и СУБД. В сценариях подбора товаров и формирования документов это порождает сотни сетевых вызовов на каждое действие оператора.
Проанализируем преимущества перевода пользователей в терминальный режим (RDS / RemoteApp):
- Устранение задержек сети: Клиентские сессии толстого клиента работают на терминальном сервере, связанном с сервером 1С и СУБД высокоскоростной шиной или гигабитным каналом с минимальным пингом.
- Снижение нагрузки на каналы связи: По локальной сети передается только графическое изображение рабочего стола пользователя и события ввода.
- Изоляция ресурсов: Для обеспечения максимальной производительности терминальный сервер необходимо разворачивать на отдельной физической или виртуальной машине, чтобы сессии пользователей не отбирали процессорное время и оперативную память у СУБД и рабочих процессов 1С.
Расчет и перераспределение оперативной памяти между MS SQL и 1С
Для базы объемом 175 ГБ критически важно обеспечить достаточное количество оперативной памяти для кэширования страниц данных СУБД. Если для MS SQL Server выделено всего 17 ГБ, СУБД вынуждена постоянно обращаться к медленным операциям чтения с диска, что вызывает очереди и зависания.
Рассмотрим правила распределения ОЗУ на сервере:
- Снятие ограничений ОС: Операционная система Windows Server Standard имеет лимиты по объему используемой ОЗУ (32 ГБ). Переход на редакции с поддержкой полного объема физической памяти (Datacenter / Enterprise или актуальные версии ОС) позволяет задействовать всю установленную память (64–128 ГБ и более).
- Выделение памяти для SQL Server: В свойствах экземпляра MS SQL Server параметр
Maximum server memory (in MB) должен быть скорректирован. При объеме ОЗУ 64 ГБ СУБД следует выделить порядка 45–50 ГБ. При установке 128 ГБ памяти под SQL Server рекомендуется отдать 100–105 ГБ. - Резервирование под ОС и кластер 1С: На сервере необходимо оставить не менее 4–6 ГБ для нужд операционной системы и по 1–1.5 ГБ на каждый рабочий процесс
rphost. - Закрепление страниц памяти (Lock Pages in Memory): Для сервисной учетной записи MS SQL Server в локальных политиках безопасности Windows необходимо включить привилегию
Lock Pages in Memory, чтобы предотвратить сброс страниц памяти СУБД в файл подкачки при пиковых нагрузках.
Тонкая настройка кластера серверов 1С:Предприятия
Чтобы избежать утечек памяти и не выполнять ручной перезапуск служб 1С и SQL в середине дня, настроим автоматическое управление рабочими процессами в консоли администрирования кластера 1С:
- Допустимый объем памяти: Зададим пороговое значение памяти на процесс. При превышении этого лимита кластер автоматически запустит новый рабочий процесс
rphost, а старый плавно завершит после обслуживания активных сеансов. - Интервал перезапуска рабочих процессов: Установим регулярный автоматический перезапуск процессов (например, каждые 86400 секунд в нерабочее время) для очистки фрагментированной памяти.
- Количество соединений на процесс: Ограничим число пользователей на один
rphost (в среднем от 15 до 25 сессий на процесс), чтобы распределить нагрузку между несколькими процессами.
Оптимизация параметров СУБД MS SQL Server
Выясним, какие параметры СУБД напрямую влияют на скорость подбора номенклатуры и проведение документов в 1С:
- Параллелизм (MAXDOP): Для транзакционной нагрузки 1С:Предприятия необходимо установить параметр
Max Degree of Parallelism в значение 1. Это исключит накладные расходы на распараллеливание простых запросов и уменьшит блокировки потоков ожидания CXPACKET. - Порог параллелизма: Параметр
Cost Threshold for Parallelism рекомендуется увеличить до 50. - Конфигурация TempDB: База данных
TempDB должна быть разбита на несколько файлов данных одинакового размера (по числу физических процессорных ядер, но не более 8). Файлы TempDB и журнал транзакций базы следует размещать на быстрых накопителях SSD/NVMe. - Регламентные процедуры СУБД: Настроим регулярные планы обслуживания в SQL Server Management Studio:
- Ежедневное обновление статистик (
Update Statistics) с достаточным коэффициентом сканирования;
- Регулярную дефрагментацию и реиндексацию таблиц базы данных в нерабочее время.
Прикладная оптимизация и регламенты в 1С
Помимо серверных настроек, частой причиной зависания подбора номенклатуры и проведения документов является неоптимальное состояние данных в самой информационной базе:
- Актуализация итогов регистров накопления: Если граница рассчитанных итогов по регистрам остатков товаров и партий отстает от текущей даты, система при каждом обращении рассчитывает остатки динамически, суммируя все движения за месяцы. Регулярно выполняем пересчет и сдвиг итогов на начало следующего месяца через стандартную обработку
Управление итогами. - Анализ RLS (прав доступа на уровне записей): Ограничения прав по складам, организациям или контрагентам значительно усложняют генерируемые SQL-запросы. Проверим, не включен ли RLS для пользователей, которым такие ограничения функционально не требуются.
- Настройка планов электропитания: В BIOS сервера и настройках схемы электропитания Windows Server установим режим
Высокая производительность (High Performance) для исключения просадок частоты процессоров с базовой частотой 2.4 ГГц.