Как я могу точно определить использование памяти пула приложений приложением ASP.NET
Моя хостинговая компания налагает ограничение в 100 Мб памяти на пулы приложений (IIS 7.5).
Как я могу точно определить использование памяти моим приложением ASP.NET?
Чтобы создать какую-то базовую строку, я создал пустое приложение ASP.NET MVC 3 с одним действием контроллера, возвращая строковый результат.
Профилирование этого приложения с помощью ANTS дало следующие результаты:
Generation 1 - 286.2KB
Generation 2 - 795.4KB
Large Object Heap - 75.63KB
Unused memory allocated to .NET - 1.323MB
Unmanaged - 26.78MB
Меня беспокоит то, что если ограничения пула приложений основаны на частных байтах, то пустое приложение ASP.NET MVC использует 33 МБ ресурса пула. Поэтому мое MVC-приложение, которое на самом деле что-то делает (использует 93 МБ), легко превысит "предел".
Если, однако, я звоню GC.GetTotalMemory
тогда результат составляет 8 МБ, что звучит гораздо более приемлемо.
У меня не было абсолютно никакого успеха в поиске каких-либо тестов для сравнения, но если пустое веб-приложение MVC действительно использует 33 МБ ресурса (это звучит чрезмерно), то ограничения, налагаемые моим хостом, кажутся совершенно нереальными.
Большое спасибо, Бен
1 ответ
- Поговорите с вашим хостинг-провайдером, чтобы узнать, является ли это ограничение памяти частной памятью или виртуальным.
- Узнайте о частной памяти и виртуальной памяти, а затем воспользуйтесь профилировщиком ANTS, чтобы лучше понять объем памяти вашего приложения.