¡Oye! He estado trabajando en métricas de Windows durante bastante tiempo. El proceso de recolección ya se ha depurado, y los detalles comienzan a desaparecer de la memoria, por lo que es hora de transferir los conocimientos adquiridos, por así decirlo, al papel. El artículo tratará sobre lo que pasó, lo que se entregó, cómo trabajar con él, qué rastrillos y muletas serán para ellos. En el camino, tocaremos .net clr, asp.net, wcf, iis, signalr, etw y algo más. Un artículo para los que están en el tema, bueno, o casi ...
Por el momento, las métricas en Windows se pueden dividir en dos sistemas: contadores de rendimiento (que sea heredado) y contadores de eventos (modernos y juveniles).
Los mostradores de rendimiento no son solo un sándwich, sino una ensalada completa de diferentes ingredientes y toneladas de puntos de entrada para trabajar con ellos.
Y como puede ver en el diagrama, todo se reduce a un punto PDH, aunque puede sondear los componentes en cualquier nivel: ya sea advapi, registro o perflib.
, , , ( prometheus), ( PDH) - , , , - ... , grafana , , , : w3wp#101, _LM_W3SVC_1001_ROOT, --62, C400001640000001, Service@||Service.svc. - . - - . , :
Locate and then click the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance
On the Edit menu, click New , and then click DWORD Value .
Right-click New Value #1 , click Rename , and then type ProcessNameFormat to name the new value.
Right-click ProcessNameFormat , and then click Modify .
In the Data value box, type one of the following values, and then click OK :
1 : Disables PID data. This value is the default value.
2 : Enables PID data.
Right-click New Value #1 , click Rename , and then type ProcessNameFormat to name the new value. Right-click ProcessNameFormat , and then click Modify.
1 : Disables PID data. This value is the default value.
2 : Enables PID data.
: PID_ProcessName. , , - ( ), . "".
, ...
Process
, , , IIS (w3wp), - w3wp#101 . - ID Process, PID`a . ...
-, ( ), , , : 100 150, , , , .. 150 149 (w3wp#149).
-, performance NtQueryInformationProcess ( ), , , - .
[
"\\\\localhost\\Process(w3wp#100)\\ID Process",
"\\\\localhost\\Process(w3wp#101)\\ID Process",
...
]
, , . .net ETW. , , ( , ). .
ASP.NET Applications
_LM_W3SVC_1001_ROOT, 1001 - IIS. , , , , PID, ID . , ( ).
IIS. : xml, - , . XmlDocument. ...
const string section = "/configuration/system.applicationHost/sites/site"
XmlNodeList nodes = doc.DocumentElement.SelectNodes(section);
foreach (XmlNode node in nodes)
{
w3svcs.TryAdd($"_LM_W3SVC_{node.Attributes["id"].Value}_ROOT", node.Attributes["name"].Value);
}
ServiceModelService 4.0.0.0
WCF , - , . , SVC , . - , , , . . , grafana.
HTTP Service Url Groups
- C400001640000001. , . - , . , :
netsh http show servicestate view=requestq verbose=no
Request queue name: Request queue is unnamed.
Version: 2.0
State: Active
Request queue 503 verbosity level: Basic
Max requests: 1000
Number of active processes attached: 1
Process IDs:
33800
URL groups:
URL group ID: C400001640000001
State: Active
Request queue name: Request queue is unnamed.
Number of registered URLs: 1
Registered URLs:
HTTP://+:80/health/
Server session ID: EF00001020000031
Version: 2.0
State: Active
: URL group ID ( ) Process IDs, .
, API URL groups, (Server session ID), , , .
, . , , , "@"Process\sIDs:[^\d]?(\d+).?URL\sgroup\sID:\s([a-zA-Z0-9]+)", - , , .
SignalR
performance counters. , . "" : , . .
El sistema de contadores de rendimiento está lleno de misterios y misterios. No es fácil trabajar con él y, desafortunadamente, muchos productos nuevos (de hecho, como el propio microsoft) continúan usándolo activamente. El artículo resultó no ser pequeño, muchas cosas pueden parecer incomprensibles y los detalles de implementación no se revelan.
Contadores de eventos Decidí pasar a otra parte ... ¡Las preguntas son bienvenidas!