Seguimiento de la contención en el proceso del servidor
Para atender las solicitudes entrantes, RPC mantendrá un conjunto de subprocesos de trabajo. Lo ideal es que el número de subprocesos sea pequeño. Sin embargo, esta situación ideal solo se ha visto en entornos de laboratorio, donde las rutinas del administrador del servidor se ajustan cuidadosamente. En una situación real, el número de subprocesos variará en función de la carga de trabajo del servidor, pero puede ser de 1 a 50.
Si el número de subprocesos de trabajo es superior a 50, es posible que tenga una contención excesiva en el proceso del servidor. Las causas comunes de esto son el uso icriminado del montón, la presión de memoria o la serialización de la mayoría de las actividades en un servidor a través de una sola sección crítica.
Para ver el número de subprocesos en un proceso de servidor determinado, use la extensión !rpcexts.getthreadinfo o use DbgRpc con el modificador -t . Proporcione el identificador de proceso (en el ejemplo siguiente, 0xC4):
D:\wmsg>dbgrpc -t -P c4
Searching for thread info ...
## PID CELL ID ST TID LASTTIME
-----------------------------------
00c4 0000.0004 03 0000011c 000f164f
00c4 0000.0007 03 00000120 008a6290
00c4 0000.0015 03 0000018c 008a6236
00c4 0000.0026 03 00000264 0005c443
00c4 0000.002d 03 00000268 000265bb
00c4 0000.0030 03 0000026c 000f1d32
00c4 0000.0034 03 00000388 007251e9
En este caso, solo hay siete subprocesos de trabajo, lo que es razonable.
Si hay más de 100 subprocesos, se debe adjuntar un depurador a este proceso y la causa investigada.
Nota La ejecución de consultas como dbgrpc -t de forma remota es costosa para el servidor y la red. Si usa esta consulta en un script, debe asegurarse de que este comando no se ejecute con demasiada frecuencia.