OneAgent требования к памяти
Глубокий мониторинг приложения с Dynatrace OneAgent предполагает увеличение потребности в памяти для каждого приложения по сравнению с выполнением без Dynatrace OneAgent. Помимо памяти, необходимой для загрузки двоичного кода модуля кода OneAgent в процесс приложения, память используется для хранения отслеживаемой информации о состоянии приложения, коммуникационных буферов и т. д.
Потребность в памяти не является постоянным числом или пропорцией требований к памяти приложения, а зависит от технологии, конфигураций мониторинга, свойств приложения и выполняемой нагрузки. Дополнительные сведения о требованиях к памяти см. в разделе О дисперсии потребности в памяти ниже.
Требования к памяти модуля кода OneAgent
Как указано выше, мониторинг потребности в памяти зависит от множества факторов. Чтобы упростить прямое планирование ресурсов, мы рекомендуем учитывать дополнительный бюджет памяти в 200 МБ для отслеживаемых процессов приложений. Этого количества будет достаточно для мониторинга огромного количества приложений. Эмпирические наблюдения показывают, что потребность в памяти для большинства приложений значительно ниже 100 МБ.
Потребность в памяти для мониторинга относится к размеру страниц памяти (RSS) или эквивалентной количественной оценке в операционных системах, отличных от Linux. RSS — это ключевой количественный показатель для применения ограничений памяти к процессам.
Ограничения памяти облачной платформы
Kubernetes и другие облачные платформы позволяют определять лимиты памяти для рабочих нагрузок. Определенные ограничения применяются (грубо говоря) к RSS, и рабочие нагрузки автоматически прекращаются, как только они превышают определенный предел памяти.
Поскольку модули кода Dynatrace OneAgent увеличивают потребность в памяти отслеживаемых приложений, лимиты памяти должны быть скорректированы соответствующим образом.
О дисперсии потребности в памяти
Потребность в памяти для глубокого мониторинга модуля кода OneAgent не может быть точно выражена в виде постоянного числа или доли памяти, потребляемой процессом приложения. Это сумма памяти, необходимой для основной работы модуля кода OneAgent (например, коммуникационных буферов), и данных динамического мониторинга, собранных модулями кода OneAgent. Потребность в памяти для данных динамического мониторинга зависит от настроек конфигурации, базовой технологии приложения и самого приложения.
Потребность в памяти, зависящая от приложения
Видимость на уровне кода и анализ горячих точек требуют регистрации времени и частоты выполнения функций. Таким образом, количество функций в приложении и их выполнение определяют количество элементов данных и, в конечном счете, объем памяти, необходимый для измерения производительности функции. То же самое относится к информации PurePath — потребность в памяти для сбора информации PurePath зависит от количества одновременных запросов, обрабатываемых приложением, и сложности (т. е. длины PurePath) выполнения, запускаемого этими запросами.
Потребность в памяти, зависящая от конфигурации
Мониторинг пользовательских служб является примером мониторинга потребности в памяти, зависящей от конфигурации. Определение настраиваемой службы увеличивает базовый бюджет памяти для инструментария выбранной функции и бюджет динамической памяти для увеличения количества данных PurePath, собираемых для вызовов настраиваемой службы. В технологии .NET инструментирование дополнительных сборок для пользовательской службы может значительно увеличить потребность в памяти при запуске (см. ниже).
Потребность в памяти, зависящая от технологии
Модули кода OneAgent оптимизированы для эффективного использования памяти и освобождения ресурсов, когда они больше не нужны, чтобы как можно меньше нагружать выполнение приложений. Таким образом, потребность в памяти может меняться в зависимости от времени выполнения приложения.
В зависимости от модуля кода OneAgent потребность в памяти может достигать пика при запуске приложения. Это особенно верно для технологии .NET. Подготовка сборок .NET к мониторингу приводит к резкому увеличению объема памяти, поскольку код сборки временно дважды находится в памяти. Это известная проблема технологии Microsoft .NET, которую нельзя устранить с помощью Dynatrace OneAgent.