Casos do Dia a Dia – SQL Server alcançou o limite de 32767 conexões em produção
Fala Galera,
Esse é mais um post para compartilhar minhas experiências do Dia a Dia de DBA com vocês.
Um cliente que atendo teve um problema onde não conseguia mais realizar conexões no SQL Server. O erro abaixo era gerado ao se tentar conectar no SQL Server:
“A severe error occurred on the current command. The results, if any, should be discarded”
Quando me conectei no ambiente o SQL já havia reiniciado e novas conexões já estavam liberadas no SQL. Ao olhar o error log, identifiquei o erro abaixo:
“Could not connect because the maximum number of ‘32767’ user connections has already been reached. The system administrator can use sp_configure to increase the maximum value. The connection has been closed. [CLIENT: <named pipe>]”
Em 10 anos e 6 meses trabalhando com SQL Server foi a primeira vez que vi um ambiente de produção estourar o limite de conexões do SQL Server, que são 32767 conexões.
Mas e aí? Quem abriu todas essas conexões?
Logo de imediato eu não consegui identificar quem abriu essas conexões que causaram o problema. Contudo, nesse cliente eu tinha um log da quantidade de conexões no SQL Server, exatamente igual ao desse post que escrevi abaixo:
Com esse log, consegui identificar que essas conexões estavam aumentando de forma gradual. Não era um aumento de conexão instantâneo que já travava o servidor, conforme pode ser visto abaixo:
Às 18:40h tínhamos 27.892 conexões. Às 19:01h tínhamos 32.539 conexões, que foi o último registro desse log. Ou seja, aumentou 5 mil conexões em 20 minutos, para chegar as 32 mil conexões demorou mais de uma hora.
Sabendo disso, criamos um Alerta para enviar um e-mail quando o número de conexões passasse de 1.000 conexões, que já era um valor auto para esse ambiente.
No outro dia, esse e-mail chegou:
Encontramos a aplicação que estava deixando as conexões abertas. Uma procedure estava dando erro e as conexões estavam se acumulando ao invés de serem fechadas.
O pessoal corrigiu a aplicação e depois disso o problema não voltou a acontecer.
Ou seja, o log de conexões me ajudou a ver o crescimento de conexões e o alerta me ajudou a identificar um novo crescimento para tomarmos uma ação antes do servidor parar novamente.
Gostou dessa dica?
Cadastre seu e-mail para receber novos Posts e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.
Confira mais experiências do Dia a Dia de um DBA no meu Treinamento de Tarefas do Dia a Dia de um DBA.
Até a próxima.
Abraços,
Fabrício Lima
MCITP – Database Administrator
Consultor e Instrutor SQL Server
Trabalha com SQL Server desde 2006
Dica muito valiosa para o gerenciamento de conexões em aberto. Parabéns pelo seu trabalho.
Obrigado Henrique!