Как получить статистику памяти Kentico с помощью кода C#? - PullRequest
0 голосов
/ 23 января 2020

Фон

Недавно я столкнулся с исключением из-за нехватки памяти, когда пользователи посещали несколько страниц моего сайта Kentico. Перемотка вперед - я обнаружил, что выделенная память (System> General) была более 2 ГБ! Затем я перешел к «Отладка> Очистить кэш», а затем заметил, что выделенная память находится примерно в 400 МБ (фу…). Теперь, когда пользователи посещают страницу, она будет работать без исключений нехватки памяти.

enter image description here

Вопрос

Есть ли способ получить эту статистику памяти с помощью кода (в идеале C#)? Я подумываю о возможности регулярно отслеживать статистику памяти и запускать оповещение (отправлять электронное письмо / публикацию в webhook из моего C# кода), когда выделенная память становится слишком высокой.

Дополнительная информация

  • Kentico версии 9.0.42, размещенная в Azure, масштабирована до 2 экземпляров.
  • Использование памяти Плана обслуживания приложений (в Azure) было примерно на 50% за счет - это исключает возможность установки оповещения на этом уровне.

Спасибо!

Ответы [ 4 ]

1 голос
/ 23 января 2020

Вы можете использовать SystemHelper класс для получения статистики и данных памяти. Он по-прежнему в основном опирается на NET Процесс и его свойства. Если вы используете azure, вы можете использовать выше вместе с PerformanceCounters, чтобы регистрировать свои собственные наборы информации для понимания приложения и создавать свои собственные оповещения на основе этих счетчиков.

1 голос
/ 23 января 2020

Если вы посмотрите код на странице системы, вы найдете свой ответ. Файл Go до /CMSModules/System/Controls/System.ascx.cs и поиск Memory.Text. Вы найдете несколько SystemHelper методов, чтобы получить значения для вас.

SystemHelper.GetVirtualMemorySize()
SystemHelper.GetWorkingSetSize()
SystemHelper.GetPeakWorkingSetSize()

0 голосов
/ 24 января 2020

Kentico рекомендует перезапускать ваше приложение один раз в 24 часа. Я предлагаю вам запланировать перезапуск ваших экземпляров один за другим в течение ночи.

0 голосов
/ 23 января 2020

Кажется, в Kentico API нет ничего, что могло бы получить доступ к статистике памяти, но, возможно, этот ответ поможет вам.

...