Проблема «раздувания» рабочего процесса сервера приложений rphost является одной из самых труднодиагностируемых в администрировании систем на базе 1С:Предприятие. Особенно часто это проявляется в крупных внедрениях, таких как «Управление производственным предприятием 1.3» (УПП). В рамках данной статьи мы подробно разберем, как практика проведения документов будущей датой влияет на стабильность сервера, проанализируем механизмы работы платформы с итогами и выясним, почему память сервера не всегда освобождается вовремя.
Для начала вспомним базовое ограничение платформы 1С: проведение документа в оперативном режиме возможно только текущей датой и временем. Как только пользователь или программный код пытается провести документ «будущим числом», система принудительно переключает режим проведения в неоперативный. Это влечет за собой ряд архитектурных последствий:
Рассмотрим пример кода, который часто используется для проверки остатков в неоперативном режиме, и проанализируем, почему он создает нагрузку на память сервера:
// Пример программного контроля остатков в неоперативном режиме
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
// Если дата документа — будущая, сервер выполняет сложный расчет
Запрос.УстановитьПараметр("Период", СсылкаНаДокумент.Дата);
Запрос.УстановитьПараметр("Номенклатура", ВыбранныйТовар);
Результат = Запрос.Выполнить();
При выполнении такого запроса сервер rphost кэширует промежуточные результаты расчетов. Если таких обращений много, и они происходят по разным будущим датам, кэш метаданных и данных в оперативной памяти начинает стремительно расти.
Важно понимать разницу между «нормальным» использованием памяти и «утечкой». Как отмечают эксперты, утечкой считается ситуация, когда память не освобождается должным образом после фиксации транзакции и закрытия всех объектов. В контексте документов будущей датой процесс rphost может «пухнуть» по следующим причинам:
tempdb. В старых версиях платформы 8.3 механизмы очистки этих таблиц при работе с «далекими» периодами могли давать сбои.rphost замечают утром после ночного перепроведения. Если в последовательность документов попадают объекты с будущей датой, граница последовательности может «скакать», заставляя систему пересчитывать огромные массивы данных, что ведет к накоплению мусора в оперативной памяти процесса.Многие системные администраторы пытаются решить проблему «распухания» процесса переходом на 64-битную версию сервера 1С. Разберем, помогает ли это на самом деле. На 32-битном сервере процесс rphost ограничен адресным пространством в 2-4 ГБ. Как только этот лимит превышен, сервер «падает» с ошибкой Out of memory.
Переход на 64-битный сервер не устраняет саму причину утечки (если она есть в коде или платформе), а лишь увеличивает «емкость», в которую эта память может «вытекать». Вместо падения сервера вы получаете ситуацию, когда rphost занимает 40-60 ГБ оперативной памяти, замедляя работу всей ОС за счет использования файла подкачки. Таким образом, это временная мера, которая не отменяет необходимости оптимизации кода и настроек платформы.
Для того чтобы стабилизировать работу системы и предотвратить бесконтрольный рост rphost, проанализируем и применим следующие шаги:
Допустимый объем памяти и Интервал перезапуска. Это позволит системе автоматически завершать «разросшиеся» процессы rphost, создавая новые и передавая им активные сеансы пользователей без прерывания работы.Границу итогов в регистрах. Проведение документов в глубоком будущем может привести к тому, что система создаст записи в таблицах итогов на месяцы вперед. Используйте обработку Управление итогами, чтобы убедиться, что итоги рассчитаны по текущий месяц включительно и не уходят в неоправданно далекое будущее.Проблема роста rphost при использовании будущих дат — это комплексный вопрос, где технические особенности платформы пересекаются с организационными привычками пользователей. Хотя сама по себе будущая дата не является «запрещенной», ее массовое использование в неоперативном режиме создает избыточную нагрузку на подсистему расчета итогов и кэширования данных. Комбинируя административные настройки кластера 1С с оптимизацией учетных механизмов, можно добиться стабильной работы даже в таких сложных конфигурациях, как УПП 1.3.