При эксплуатации крупной информационной системы на платформе 1С:Предприятие 8.3 с одновременной работой около 500 пользователей (например, в связке с конфигурациями УТ 11, БУХ, ЗУП) администраторы часто сталкиваются с падением рабочих процессов rphost, ошибками «Аварийно завершен процесс» или «Не хватает памяти». Чаще всего подобные сбои проявляются во время выполнения ресурсоемких операций: массового перепроведения документов, закрытия месяца или построения тяжелых отчетов. Разберем по шагам, как выявить узкие места инфраструктуры и оптимизировать параметры операционной системы, СУБД и кластера 1С для обеспечения стабильной и быстрой работы.
Разберем фундаментальную причину падений под высокой нагрузкой. Когда сервер 1С:Предприятия и MS SQL Server сосуществуют на одной физической машине, между ними неизбежно возникает ожесточенная конкуренция за оперативную память и процессорное время. СУБД стремится кэшировать в оперативной памяти как можно больше страниц данных, а рабочий процесс rphost при выполнении вычислений запрашивает динамические блоки RAM. В моменты пиковых вычислений операционная система не успевает своевременно выделить страницы памяти или начинает сбрасывать данные в файл подкачки, что приводит к краху служб.
Оптимальным решением является разделение нагрузки на два выделенных физических сервера:
Обратим особое внимание на сетевой канал между сервером 1С и сервером СУБД. При 500 активных сессиях и базах объемом свыше 100 ГБ стандартного прямого подключения 1 Гбит/с становится категорически недостаточно. Во время закрытия месяца и массового расчета регистров межсерверный трафик переполняет гигабитный линк. Это приводит к задержкам передачи пакетов, потере сетевых пакетов, таймаутам соединений и аварийному сбросу сессий. Обязательно используем межсерверное соединение со скоростью не менее 10 Гбит/с, а также активируем технологию Jumbo Frames (MTU 9000) на обоих физических адаптерах для снижения накладных расходов процессора на обработку сетевых кадров.
Проанализируем базовые параметры операционной системы на обоих серверах, без коррекции которых тонкие настройки 1С и СУБД не дадут должного эффекта:
Рассмотрим конфигурацию параметров экземпляра MS SQL Server, предотвращающую взаимоблокировки и нерациональный расход ресурсов:
MaxDoP значение 1 (отключение параллелизма запросов). Установка MaxDoP = 0 без тонкой калибровки стоимости запросов приводит к тому, что простые запросы динамических списков начинают дробиться на множество потоков, вызывая задержки типа CXPACKET и зависание интерфейсов пользователей. Если параллелизм необходим для ускорения тяжелых аналитических выборок, параллельно повышаем стоимостной порог параллелизма (Cost Threshold for Parallelism) со стандартных 5 до значений 35–50, исключая запуск параллельных планов на мелких операциях.tempdb и обеспечивают пропорциональный рост всех файлов данных.tempdb на несколько файлов данных одинакового размера (по числу физических ядер процессора, но не более 8 файлов). Шаг авторасширения файлов настраиваем фиксированным объемом (например, по 256–512 МБ), исключая процентное увеличение.SE_MANAGE_VOLUME_NAME). Это устраняет замирание работы пользователей при росте файлов данных.Перейдем к свойствам кластера 1С, непосредственно влияющим на стабильность рабочих процессов rphost:
rphost. Это защитит процесс от чрезмерного потребления виртуальной памяти и ее фрагментации, а также изолирует группы пользователей друг от друга.rphost и работу остальных сотен сеансов.rphost, полностью оградив интерактивную работу менеджеров от просадок производительности.Выясним причину ошибок нехватки памяти на стороне конфигураций (УТ 11, ERP). В типовых решениях процедура закрытия месяца по умолчанию пытается распараллеливать операции на максимальное число потоков по количеству потоков процессора. Это приводит к одновременному созданию десятков тяжелых фоновых заданий, порождающих конкуренцию за блокировки регистров и мгновенный расход оперативной памяти.
В настройках закрытия месяца в прикладном решении ограничиваем число параллельных потоков расчетных операций до консервативных величин: от 2 до 4 потоков. Это снимет критическую нагрузку на память, устранит взаимные блокировки и существенно сократит общее время регламентной процедуры.
Также проводим ревизию расписания фоновых задач: отключаем или переносим на глубокую ночь фоновое слияние индексов полнотекстового поиска (СлияниеИндексовППД), пересчет итогов регистров и регулярные синхронизации данных, исключая их наложение на перепроведение документов.