Каждый системный администратор и специалист по обеспечению производительности систем на базе 1С:Предприятие 8.3 рано или поздно сталкивается с проблемой избыточного потребления оперативной памяти рабочими процессами rphost. Платформа 1С известна своей требовательностью к ресурсам, а утечки памяти в коде конфигураций или неоптимальные запросы пользователей могут быстро привести к полной неработоспособности физического или виртуального сервера.
Для борьбы с этим явлением в консоли администрирования кластера 1С предусмотрены специальные параметры рабочего сервера. В этой статье мы подробно разберем, как правильно рассчитать лимиты памяти, какой параметр должен быть больше, а также затронем важнейший исторический и практический аспект — разделение этих функций между лицензиями уровней ПРОФ и КОРП.
При настройке свойств рабочего сервера в консоли администрирования кластера 1С нам доступны два ключевых параметра ограничения памяти:
Давайте ответим на главный вопрос: значение параметра «Критический объем памяти процессов» обязательно должно быть больше, чем значение «Временно допустимый объем памяти процессов» (при условии, что оба параметра настроены и их значения больше нуля).
Проанализируем детально, как работают эти механизмы изнутри, чтобы понять логику такого соотношения.
Параметр Временно допустимый объем памяти процессов отвечает за запуск процедуры деликатного освобождения ресурсов без прерывания работы пользователей. Когда суммарный объем памяти, потребляемый рабочим процессом rphost, превышает установленный лимит, сервер 1С не убивает его мгновенно.
Вместо этого запускается следующий алгоритм:
rphost — их запросы перенаправляются на другие, «чистые» рабочие процессы кластера.rphost безопасно закрывается платформой, а вся занятая им память возвращается операционной системе.Параметр Критический объем памяти процессов — это экстренное средство предотвращения зависания и падения всего сервера из-за нехватки оперативной памяти (так называемый сценарий Out-Of-Memory).
Если один или несколько рабочих процессов rphost лавинообразно увеличивают потребление ОЗУ и достигают этой отметки, платформа 1С действует незамедлительно:
Это жесткая мера, но она необходима. Если бы этого лимита не было, процесс продолжил бы раздуваться, что привело бы к переполнению файла подкачки, зависанию операционной системы сервера и, как следствие, к падению абсолютно всех баз данных и сессий на этом сервере.
Важный вывод: если вы установите критический объем памяти равным или меньшим, чем временно допустимый объем, то механизм мягкого перезапуска процессов просто никогда не успеет сработать. Сервер будет сразу «убивать» процессы при достижении нижнего порога, лишая пользователей возможности комфортно продолжить работу при плановом обновлении пула процессов.
В обсуждениях администраторов 1С часто фигурирует дата 10.09.2019. Это день, когда фирма «1С» ввела строгое программное разделение функционала технологической платформы в зависимости от используемых лицензий — уровня ПРОФ или КОРП.
До этой даты администраторы систем с обычными лицензиями ПРОФ могли свободно менять любые настройки кластера. Однако с выходом обновлений осенью 2019 года ситуация резко изменилась. При попытке запустить систему, настройки кластера которой отличались от дефолтных, пользователи получали блокирующую ошибку: Операция не может быть выполнена с текущим составом лицензий.
Согласно первоначальным правилам лицензирования, для лицензий уровня ПРОФ планировалось полностью заблокировать возможность изменения параметров управления памятью рабочих процессов. Предполагалось, что эти настройки — прерогатива крупных корпоративных клиентов, использующих лицензии КОРП (которые требуются при наличии более 500 одновременно работающих сеансов или использовании более 12 ядер процессора на сервере).
Полный запрет на регулирование памяти для лицензий ПРОФ вызвал волну трудностей у средних и малых внедрений. Из-за утечек памяти серверы без настроенных ограничений регулярно зависали. Фирма «1С» оперативно отреагировала на отзывы сообщества и уже в октябре 2019 года выпустила официальное разъяснение и техническое послабление.
Для владельцев лицензий уровня ПРОФ была возвращена возможность легально настраивать и изменять три важнейших параметра кластера:
Критический объем памяти процессовВременно допустимый объем памяти процессовПредел превышения временно допустимого объема памяти процессовЭти параметры на лицензиях ПРОФ теперь работают исключительно для целей перезапуска процессов (освобождения памяти). На лицензиях уровня КОРП они могут функционировать совместно с расширенными механизмами балансировки нагрузки и жесткими лимитами потребления ресурсов на один вызов сервера.
Рассмотрим по шагам, как рассчитать оптимальные значения этих параметров для сервера баз данных. Предположим, наш выделенный сервер приложений 1С обладает следующими характеристиками:
1C:Enterprise Server (СУБД вынесена на отдельный физический сервер, что является лучшей практикой).Выполним расчет доступных лимитов:
rphost. Распределим доступную память между ними. На каждый процесс должно приходиться не более 13 ГБ в пике.Для мониторинга потребления памяти процессами rphost силами операционной системы Windows можно использовать простой скрипт на PowerShell:
Get-Process rphost | Select-Object Id, ProcessName, @{Name="WorkingSet(MB)";Expression={[math]::round($_.WorkingSet / 1MB, 2)}} | Format-Table -AutoSize
Регулярно анализируйте показатели этого скрипта в периоды пиковой нагрузки. Если вы замечаете, что процессы постоянно завершаются аварийно, а пользователи жалуются на обрывы связи — плавно увеличивайте лимиты или оптимизируйте код конфигураций, закрывая утечки памяти.