У меня есть несколько счетчиков производительности perfmon, которые я хотел бы отслеживать для конкретного приложения ASP.NET в течение длительного периода времени, скажем, недели или месяца. Проблема в том, что счетчики perfmon обычно ориентированы на процессы, а не на приложения ASP.NET или AppPool. Так, например, я могу привязать счетчик
.NET CLR Memory performance counters\# Gen 0 Collections
к конкретному рабочему процессу IIS (который, к сожалению, идентифицируется через w3wp, w3wp # 1, w3wp # 2, но для исправления этого см. Как преобразовать имена процессов w3wp в идентификаторы PID или имена пользователей? (например, "w3wp # 29)"), но я не могу привязать его к «любому процессу, который сейчас или в будущем будет запускать приложение ASP.NET X или AppPool Y». Это означает, что если IIS перезапускает рабочий процесс, или если кто-то перезапускает IIS или перезапускает машину, то мои журналы perfmon не могут рассчитывать на то, что они будут отслеживать одно и то же веб-приложение.
Есть ли какой-нибудь трюк для использования perfmon для мониторинга данного веб-приложения, даже если рабочий процесс (например, w3wp.exe) перезапускается, перезагружается машина и т. Д.?
Есть несколько возможных ответов, которые я нашел здесь в поисках других вопросов, но они не кажутся на 100% правильными (хотя я буду поддерживать объяснения, почему они на самом деле могут быть правы):