ASP.NET: w3wp использует много памяти, и процесс не отвечает - PullRequest
1 голос
/ 09 октября 2008

Может кто-нибудь дать мне пошаговые инструкции или указать на правильные ссылки в правильном порядке

чтобы я мог определить причину этой проблемы?

Ответы [ 3 ]

2 голосов
/ 09 октября 2008

Вы можете получить дамп памяти процесса и заглянуть в него WinDbg. По крайней мере, он выдаст вам список исключений и текущее состояние (я) потоков. Тем не менее, процесс перезапустит процесс. Также возможно подключиться к компьютеру в стиле QA в режиме удаленной отладки из Visual Studio. Однако я этого не сделал, и он будет зависать при каждом другом запросе.

Если w3wp работает локально, вы можете щелкнуть правой кнопкой мыши по процессу в диспетчере задач и выбрать отладку, чтобы просмотреть WinDbg. В противном случае вам понадобится что-то вроде Debug Diag на вашей рабочей / тестовой машине, чтобы создать полный дамп пользователя. Смотри: http://msdnrss.thecoderblogs.com/2008/05/21/debugdiag-11-or-windbg-which-one-should-i-use-and-how-do-i-gather-memory-dumps/

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

Информацию о настройке WinDbg для проверки ASP.NET смотрите в этой статье: http://support.microsoft.com/kb/892277

1 голос
/ 09 октября 2008

w3wp.exe - это процесс, связанный с пулом приложений в ISS. Если у вас несколько пулов приложений, у вас будет запущено несколько экземпляров w3wp.exe.

Для получения дополнительной информации, пожалуйста, прочитайте это

0 голосов
/ 09 октября 2008

w3wp.exe может занимать большой объем памяти по разным причинам.

  • Большое количество запросов на обработку
  • Большие объемы данных (например, обработка мультимедиа)
  • Утечка памяти
  • Любая комбинация выше.

Если вы подозреваете, что первые два являются проблемой, вам необходимо увеличить систему (добавить дополнительные серверы и т. Д.)

Утечка памяти приведет к постепенному увеличению использования памяти с течением времени.

Если вы подозреваете утечку памяти, можно рассмотреть следующие действия.

  • Проверка кода (особенно на статических объектах и ​​регистрации / отмене регистрации событий)
  • Профилирование: профилирование по утечке памяти иногда может быть трудной задачей. Убедитесь, что вы собираете данные за определенный период времени / запрос во время профилирования и проверяете наличие долгоживущих объектов, а также проверяйте, чтобы срок их службы был действительным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...