У меня проблема с приложением 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. Это идеальный вариант для сбора дампов процессов, основанный на множестве различных критериев.
У меня была аналогичная проблема, но для службы Windows. Оказалось, что моя проблема заключалась в том, что это был 32-битный процесс, работающий на 64-битной машине, поэтому запускался procdump
скорее, чем procdump64
было решением для меня.
Вы пробовали оба procdump
и procdump64
?