Назад | Перейти на главную страницу

procdump на w3wp.exe: выполнена только часть запроса ReadProcessMemory или WriteProcessMemory

У меня проблема с приложением IIS, которое время от времени увеличивает загрузку ЦП, и я пытаюсь использовать procdump, чтобы получить дамп памяти для исследования. Я запускаю «procdump.exe -64 -mA 9999», где 9999 - это идентификатор процесса. Но каждый раз, когда я это делаю, получаю ошибку:

Only part of a ReadProcessMemory or WriteProcessMemory request was completed.

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

Кто-нибудь знает, что не так?

РЕДАКТИРОВАТЬ С ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИЕЙ: До сих пор мне не удалось создать отладочный дамп, какой бы инструмент я ни пробовал. Кажется, все они генерируют одну и ту же ошибку. Это датацентр 2008 R2, работающий под управлением IIS7 с 64-разрядным веб-сайтом asp.net.

Я предполагаю, что что-то блокируется, в результате чего некоторые запросы остаются открытыми в IIS и постепенно расходуются ресурсы. Если я слежу за рабочим процессом с помощью диспетчера IIS и просматриваю все запросы, в течение дня я начну видеть некоторые запросы, которые «прилипают» и запускаются вечно. Некоторые из них предназначены для статических файлов. Некоторые предназначены для страниц aspx. Я не вижу для них никакой "общей" причины.

Время от времени пул приложений начинает загружать 100% ЦП, и единственное средство - убить его.

Я не уверен, что вызывает это сообщение, но я знаю, что вы можете создать дамп с помощью Process Explorer SysInternals. В Process Explorer щелкните правой кнопкой мыши файл w3wp.exe и выберите «Создать дамп»> «Создать полный дамп». На моем сервере Windows 2003 x64 потребовалось около 15 секунд, чтобы создать файл дампа размером 350 МБ. Это также не привело к перезапуску пула приложений на моем сервере.

Другой вариант - инструмент Debug Diag от Microsoft. Это идеальный вариант для сбора дампов процессов, основанный на множестве различных критериев.

https://www.microsoft.com/downloads/en/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en

У меня была аналогичная проблема, но для службы Windows. Оказалось, что моя проблема заключалась в том, что это был 32-битный процесс, работающий на 64-битной машине, поэтому запускался procdump скорее, чем procdump64 было решением для меня.

Вы пробовали оба procdump и procdump64?