Recentemente, nossos desenvolvedores aumentaram o tamanho do Pool em todas as strings de conexão para 8000. Eles estão usando o VS 2010 Framework 4.0. No lado do banco de dados, estou monitorando que até 4000 conexões estão sendo abertas. Mas o problema é que temos tons de logs de erros (veja abaixo) problemas de time-shake.
Para mim, é um problema muito complicado e não encontrei nenhuma pista. Eu sei que com o servidor que tenho (monstro real) somos capazes de suportar mais conexões abertas. Eu sei que Max é 32767, mas eu nunca espero alcançar esse número, mas quatro quilos é bem menor.
Sequências de conexão:
connectionString 1 ="server=S1;database=DB1;Integrated Security=false; user id=user; Password=password; Min Pool Size=10; Max Pool Size=8000; Connect Timeout=5;" providerName="System.Data.SqlClient"/>
.
.
.
connectionString 10 ="server=S1;database=DB10;Integrated Security=false; user id=user; Password=password; Min Pool Size=10; Max Pool Size=8000; Connect Timeout=5;" providerName="System.Data.SqlClient"/>
E o log de erros:
GXMT.Common.DataGateway.DAOException: Executed command: System.Data.SqlClient.SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=1; handshake=3565; [Login] initialization=0; authentication=0; [Post-Login] complete=1001; ---> System.ComponentModel.Win32Exception: The wait operation timed out
Obrigado.
PS: A nova descoberta ocorre quando o número de conexões excede 4.000, mesmo no Sql Server Management Studio, a abertura de uma conexão leva cerca de 25 segundos. !?
Tags sql-server .net