Acompanhamento da contenção no processo do servidor
Para atender às solicitações de entrada, o RPC manterá um conjunto de threads de trabalho. O ideal é que o número de threads seja pequeno. No entanto, essa situação ideal só foi vista em ambientes de laboratório, em que as rotinas do gerenciador de servidores são cuidadosamente ajustadas. Em uma situação real, o número de threads variará dependendo da carga de trabalho do servidor, mas pode estar em qualquer lugar de 1 a 50.
Se o número de threads de trabalho estiver acima de 50, você poderá ter contenção excessiva no processo do servidor. As causas comuns disso são o uso icriminado do heap, da pressão de memória ou da serialização da maioria das atividades em um servidor por meio de uma única seção crítica.
Para ver o número de threads em um determinado processo de servidor, use a extensão !rpcexts.getthreadinfo ou use DbgRpc com a opção -t . Forneça a ID do processo (no exemplo a seguir, 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
Nesse caso, há apenas sete threads de trabalho, o que é razoável.
Se houver mais de 100 threads, um depurador deverá ser anexado a esse processo e à causa investigada.
Nota Executar consultas como dbgrpc -t remotamente é caro para o servidor e a rede. Se você usar essa consulta em um script, verifique se esse comando não é executado com muita frequência.