Temos um servidor SQL Server 2008 R2 maduro, sendo usado em vários aplicativos da Web C #, cada um com pool de conexões.
Ontem à noite, todos os aplicativos da web perderam a capacidade de fazer login no banco de dados por 6 minutos, antes que o problema se resolvesse. Isso foi para uma variedade de logins.
Eu dei uma olhada no log de eventos no servidor e encontrei muitas mensagens como:
The client was unable to reuse a session with SPID [Various], which had been reset for connection pooling. The failure ID is 29. This error may have been caused by an earlier operation failing. Check the error logs for failed operations immediately before this error message.
Não consegui encontrar uma operação com falha imediatamente antes da mensagem de erro. O ID de falha de 29 aparentemente se refere a RedoLoginException
.
Também havia muitos deles no log de eventos:
Login failed for user '[Various]'. Reason: Failed to open the database configured in the login object while revalidating the login on the connection.
Também há alguns tempos:
A timeout (30000 milliseconds) was reached while waiting for a transaction response from the MSSQLSERVER service.
Timeout occurred while waiting for latch: class 'DBCC_MULTIOBJECT_SCANNER' id ..., type 4, Task ...: 44, waittime 300, flags 0x1a, owning task .... Continuing to wait.
Timeout occurred while waiting for latch: class 'ACCESS_METHODS_DATASET_PARENT', ...
e:
IO Completion Listener (0x900) Worker ... appears to be non-yielding on Node 1. Approx CPU Used: kernel 0ms, user 0ms, Interval; 15334
Do ponto de vista dos servidores da Web do cliente, eles receberam vários erros de login:
Logon failure: the user has not been granted the requested logon type at this computer
Logon Failure: The target account name is incorrect
Logon failure: unknown user name or bad password
Gostaria de saber sobre o pool de threads e descobri que max worker threads
está definido como 0.
Alguma idéia?
ATUALIZAÇÃO: Isso já aconteceu em três ocasiões.