Автоматически генерировать файл дампа процесса w3wp.exe при достижении порога ЦП даже при изменении PID
Я пытаюсь устранить проблему с одним из наших веб-сайтов, которая вызывает скачкообразный скачок ЦП. Сайт находится на ферме веб-серверов, и это происходит с перерывами на всех серверах в разное время. Процесс, вызывающий всплеск, - w3wp.exe. Я проверил все очевидные вещи и теперь хочу проанализировать несколько наборов файлов дампа для w3wp.exe, который вызывает всплеск.
Я пытаюсь автоматически сгенерировать файл дампа процесса w3wp.exe, когда он достигает указанного порога ЦП в течение указанного времени.
Я могу использовать ProcDump.exe, чтобы сделать это, и он работает, если он запускается до изменения PID (ID процесса).
Например:procdump -ma -c 80 -s 10 -n 2 5844
(где 5844 - PID)
- -ma Написать файл дампа со всей памятью процесса. Формат дампа по умолчанию включает информацию о потоке и дескрипторе.
- -c порог ЦП, при котором создается дамп процесса.
- -s Пределы последовательных секунд процессора должны быть достигнуты перед записью дампа (по умолчанию 10).
- -n Количество дампов для записи перед выходом.
Приведенная выше команда будет отслеживать w3wp.exe до тех пор, пока центральный процессор не скачет на 80% в течение 10 секунд, и это займет полный дамп по крайней мере в течение двух итераций.
Эта проблема:
У меня запущено несколько экземпляров w3wp.exe, поэтому я не могу использовать имя процесса, мне нужно указать PID. PID меняется каждый раз при повторном использовании пула приложений. Это приводит к изменению PID, прежде чем я смогу захватить несколько файлов дампа. Затем мне нужно снова запустить procdump на каждом веб-сервере.
Мой вопрос:
Как я могу продолжать автоматически генерировать файлы дампа даже после изменения PID?
1 ответ
ИСПОЛЬЗУЙТЕ DebugDiagnostic 2.0 от Microsfot: https://www.microsoft.com/en-us/download/details.aspx?id=49924
Он обрабатывает несколько процессов w3wp.exe. Если вам нужно общее решение, вам нужно будет написать сценарий, например https://gallery.technet.microsoft.com/scriptcenter/Getting-SysInternals-027bef71