viewcomponent net mvc5 mvc aspx asp asp.net ado.net

asp.net - mvc5 - render partial asp net core



El tiempo de espera transcurrido antes de obtener una conexión del grupo (4)

Recibo este error cada pocos días. No veré el error durante unos días y luego recibiré una ráfaga de 20 o así en un minuto más o menos.

He sido muy cuidadoso al lanzar mi código para que esté usando esta configuración básica para mi acceso a la base de datos.

try { myConnection.Open(); mySqlDataAdapter.Fill(myDataTable); myConnection.Close(); } Catch (Exception err) { if (myConnection.State != ConnectionState.Closed) myConnection.Close(); throw err; }

De la forma en que lo entiendo esto debería ejecutar mis consultas e inmediatamente liberar la conexión de vuelta al grupo, pero si algo sale mal con la consulta, entiendo la excpección, cierro mi conexión y luego arrojo el error, que finalmente queda atrapado en el nivel de aplicación y registros y correos electrónicos me el error.

Incluso usando esto a lo largo de mi código todavía estoy corriendo por el tema. ¿Qué puedo hacer para diagnosticar la causa raíz del problema?


El problema es la cantidad de conexiones agrupadas que puede tener en el grupo.

En su cadena de conexión, puede agregar el atributo "Max Pool Size = 100" para aumentar el tamaño de su grupo. Sin embargo, parece que está ejecutando al mismo tiempo una gran cantidad de consultas SQL, todas de larga ejecución. Quizás debería buscar maneras de acortar las consultas o ejecutarlas secuencialmente a través de una única conexión.


cambiar el código a algo como esto hace que sea más fácil de leer ...

try { myConnection.Open(); mySqlDataAdapter.Fill(myDataTable); } Catch (Exception err) { throw err; } finally { myConnection.Close(); }

Pero no ayuda a su tiempo de espera ...

Parece que el enunciado de relleno lleva demasiado tiempo. O que el problema en realidad está en otro lugar, donde no se conecta. La creación de perfiles de SQL podría ayudar a determinar si la instrucción de selección lleva demasiado tiempo.


Una pregunta rápida aquí. ¿Está por casualidad en un DB de acceso porque hay un límite en el número de conexiones que puede tener al mismo tiempo que podría dar lugar a su tipo de error. El servicio SQL no debería tener el mismo problema.

si está ejecutando SQL Server, desactive la agrupación de conexiones y vea si hace una diferencia en su aplicación.

Descubrí que con nuestro sistema hace unos 5 años, cuando nuestra empresa estaba creciendo rápidamente, básicamente rompimos el acceso cuando comenzamos a tocar constantemente el límite de usuario. Cambiamos a SQL en aproximadamente 24 horas y no hemos tenido ningún problema desde entonces.


Si está utilizando MSSQL configure un perfil que se ejecute por un día o dos. Haga que el perfil se guarde en un archivo o una tabla, se supone que el archivo es más rápido ...

Y luego, al tener un script que lea ese archivo en una tabla, puede consultarlo fácilmente para encontrar las consultas de mayor duración.