MSSQLSERVER_17883
Aplica-se a: SQL Server
Detalhes
Atributo | Valor |
---|---|
Nome do produto | SQL Server |
ID do evento | 17883 |
Origem do Evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbólico | SRV_SCHEDULER_NONYIELDING |
Texto da mensagem | Processo %ld:%ld:%ld (0x%lx) Trabalhador 0x%p parece não estar produzindo no Agendador %ld. Hora de criação do thread: % I64d. Thread aprox. de uso da CPU: kernel %I64d ms, usuário %I64d ms. Utilização do processo %d%%. Sistema inativo %d%%. Intervalo: %I64d ms. |
Explicação
Indica que há um possível problema com um thread que não está sendo renderizado em um agendador. Esse erro pode ser causado por uma condição do sistema operacional, problema de ambiente ou problema de software no SQL Server ou se o SQL Server não estiver recebendo ciclos suficientes para ser executado. Esse erro pode desaparecer se o thread eventualmente ceder.
Ação do usuário
Se você observar as informações da mensagem de erro, verá que certos comportamentos surgem. Por exemplo:
Se o tempo do modo de usuário aumentar rapidamente e continuar a fazê-lo, a causa provável é um loop não associado no mecanismo do SQL Server que não está produzindo corretamente.
Se o tempo do modo kernel aumentar rapidamente, o thread passará a maior parte do tempo no sistema operacional e exigirá a depuração do kernel para determinar a causa raiz desse comportamento.
Se o tempo do kernel e o tempo do usuário não estiverem aumentando rapidamente, o thread provavelmente estará aguardando uma chamada à API, como
WaitForSingleObject
,Sleep
,WriteFile
, ouReadFile
retornar. Ou o thread pode não estar sendo agendado pelo sistema operacional. As condições de paralisação da API geralmente exigem depuração do modo kernel para determinar sua causa raiz.Se
System Idle %
for baixo eProcess Utilization %
baixo, o SQL Server pode não estar obtendo ciclos de CPU suficientes. Verifique a utilização da CPU de outros aplicativos no sistema. Além disso, verifique se a paginação está acontecendo no sistema. A corridaSELECT * FROM sys.dm_os_ring_buffers
também pode fornecer mais detalhes.Se
kernel + user
os tempos forem baixos, masProcess Utilization %
altos, a condição de erro poderá indicar que os threads preemptivos estão consumindo toda a CPU (por exemplo, coleta de lixo).
A combinação de informações com a utilização do sistema e o tempo ocioso pode fornecer informações sobre a natureza do problema.
Para entender a lógica de detecção e os motivos comuns que geram essa condição de erro, consulte Como diagnosticar e corrigir os erros 17883, 17884, 17887 e 17888.