Demasiadas ligações ao SQL 2005

2

Eu tenho uma situação onde um aplicativo é ao longo do tempo abrindo um 6000 + conexões cumulativas para um backend SQL2005 SP2 de 32 bits de um par de servidores de aplicativos, eventualmente, causando pressão de memória interna (dll descarregar de mem2leave área de mensagens no log enquanto simultaneamente deixando de funcionar app ). Eu suponho que a aplicação está em falta (não fechar as conexões corretamente). Eu joguei isso de volta no cara do aplicativo, mas ele está sugerindo que o problema pode estar no servidor SQL como não está ocorrendo em um ambiente semelhante UAT. Alguma sugestão para o que eu posso fazer no lado do SQL? Eu considerei aumentar a área mem2leave, mas fiquei preocupado que isso apenas atrasasse / mascarasse o problema real.

    
por SuperCoolMoss 22.08.2009 / 14:52

3 respostas

1

Um aplicativo .NET deve se auto-limpar quando o coletor de lixo for executado no servidor de aplicativos. Isso deve ser executado automaticamente a cada poucos minutos.

Você pode consultar o SQL Server e ver se essas conexões ainda estão abertas no SQL Server?

Se você executar o netstat no servidor de aplicativos, poderá ver todas as conexões de soquete abertas? (Cada spid sendo usado no SQL Server terá uma conexão de soquete no servidor de aplicativos).

Se você vir todas as portas em uso no servidor de aplicativos, o servidor de aplicativos definitivamente não fechará as conexões, pois o SQL não fecha as conexões, a menos que seja solicitado. O código .NET pode estar esperando que isso aconteça automaticamente, e não é. Você provavelmente não tem o problema em seu ambiente de teste porque o uso é muito menor, e você provavelmente libera o ambiente de teste com mais frequência, o que faz com que todas as portas sejam fechadas quando o IIS for reiniciado.

Isso definitivamente soa como um problema de código de aplicativo para mim.

    
por 23.08.2009 / 22:33
2

Parece que o aplicativo não está usando o pool de conexões. Isso pode causar problemas como o que você descreveu. Você pode ajustar algumas das configurações de TCP / IP para o sistema operacional. Isso está descrito no seguinte artigo da base de conhecimento:

Descrição das configurações de TCP / IP que talvez você precise ajustar quando o pool de conexões do SQL Server está desabilitado

    
por 22.08.2009 / 22:21
2

Você está fechando suas conexões quando terminar de usá-las, certo?

Veja também as configurações do pool de aplicativos. Quando se reciclar, as conexões cairão.

    
por 23.08.2009 / 23:53