Мониторинг памяти приложения ASP.NET из приложения - PullRequest
6 голосов
/ 25 февраля 2009

Я ищу способ для самого приложения контролировать объем используемой памяти, чтобы я мог записывать его в файл журнала каждый час или около того и следить за использованием приложений.

Все это размещено, поэтому мы можем внести изменения в систему, чтобы увидеть, что происходит, поэтому решение должно быть изнутри кода приложения.

В будущем мы можем использовать информацию о памяти для влияния на политики кэширования.

Ответы [ 2 ]

5 голосов
/ 25 февраля 2009

Хм, а какая подробная информация вам нужна? Если вы просто хотите использовать память, вы можете спросить GC. Это знает. ;)

long bytes = GC.GetTotalMemory(false); // use 'false' to not wait for next collect

Переменная 'bytes' будет содержать количество байтов, выделенных в данный момент в управляемой памяти. Я не уверен, влечет ли управляемая память весь процесс или только домен приложения. Вам придется проверить это, запустив несколько доменов приложений в одном процессе и посмотреть, измеряется ли выделение управляемой памяти между доменами приложений. Если нет, то вы можете использовать это для измерения общего использования памяти в приложении ASP.NET.

Если вам нужна более конкретная информация, есть интерфейс диагностики для CLR, с которым вы можете взаимодействовать. Есть также много профилировщиков памяти, но если они будут работать в приложении ASP.NET, я не могу сказать.

1 голос
/ 25 февраля 2009

В качестве альтернативы, если вам нужна более подробная информация, вы можете прочитать счетчики производительности, используя класс System.Diagnostics.PerformanceCounter. Вот некоторые счетчики, к которым вы можете подключиться:

Всего байт запроса

Всего байт запроса

Время ожидания запроса

Выполнение запросов

Запросы / сек

Всего ошибок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...