w3wp.exe потребляет большое количество оперативной памяти - PullRequest
2 голосов
/ 17 ноября 2011

На днях я заметил, что кажется, что все w3wp.exe, запущенные на моем сервере, потребляют намного больше оперативной памяти, чем я ожидал. Поэтому я создал тестовое веб-приложение с одной страницей aspx, а затем с ванильной страницей global.asax (методы по умолчанию, без дополнительного кода). Затем я развернул этот сайт на IIS6 с целевой платформой 4.0, встроенной в режим выпуска с отладкой, установленной на «false». Сайт также настроен под собственный пул приложений. Затем я использовал issapp.vbs, чтобы выяснить, под каким файлом w3wp.exe работал этот тестовый сайт. Я был удивлен, увидев, что один сайт с 1 страницей использует почти 40 Мб оперативной памяти.

40 МБ ОЗУ кажется много для одностраничного сайта. Это нормально и если да, то почему? Что я могу сделать, чтобы уменьшить объем памяти?

Я также заметил, что каждый раз, когда обновлялась страница по умолчанию, w3wp.exe становился все больше и больше. IIS6 кэширует одну и ту же страницу снова и снова?

Ответы [ 3 ]

1 голос
/ 17 ноября 2011

40Mb для одного домена приложений (независимо от того, сколько у вас страниц) в порядке. Учтите, что .NET - это управляемая среда, а пул приложений содержит большую часть логики и кучи для обслуживания запросов. Во многих случаях также будет меньше стремиться освободить ОЗУ, если ОЗУ не конфликтует (это требуется другими частями системы). Вы можете разделять пулы приложений между различными веб-сайтами, и «издержки» песочницы становятся менее пропорциональными вашему восприятию того, что является приемлемым. Однако я не думаю, что это плохо.

0 голосов
/ 17 ноября 2011

Это на самом деле не проблема, так как это вполне нормально.Ваш .NET Framework загружается и, следовательно, размер.Когда возникает реальная проблема, вам придется использовать определенные инструменты постпроизводства или профилирования, чтобы исправить ее.Совместное использование некоторых статей для отладки памяти и постпроизводства на тот случай, если оно понадобится вам в будущем.

http://msdn.microsoft.com/en-us/magazine/cc188781.aspx http://aspalliance.com/1350_Post_Production_Debugging_for_ASPNET_Applications__Part_1.all http://blogs.msdn.com/b/tess/archive/2006/09/06/net-memory-usage-a-restaurant-analogy.aspx http://blogs.msdn.com/b/tess/archive/2008/09/12/asp-net-memory-issues-high-memory-usage-with-ajaxpro.aspx

0 голосов
/ 17 ноября 2011

Вы пытаетесь оптимизировать ситуацию, когда у вас нет нагрузки и нет клиентов. Это действительно не имеет смысла. Оптимизируйте для реалистичного использования.

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

...