2011-01-24 27 views
5

Heredé un proyecto de servicio web/.NET que tiene fugas graves de objetos de conexión. Curiosamente, ha estado en producción durante bastante tiempo sin problemas hasta hace poco. Supongo que el recolector de basura los limpia bastante rápido normalmente. Un servidor web en un sitio de clientes ha comenzado a quedarse sin conexiones cuando está bajo mucha carga.ADO.Net Tamaño máximo de la agrupación de la agrupación de conexiones alcanzado

Obviamente, la solución es arreglar todas las fugas de conexión, pero eso no va a suceder rápidamente. Ni siquiera puedo cambiar la configuración del grupo máximo en la cadena de conexión, la cadena de conexión está construida dinámicamente por la aplicación. Esto requeriría un cambio de código que requiere pasar por un proceso que no es rápido.

¿Hay algo que pueda hacer en el servidor para mitigar esto hasta que se produzca un cambio de código?

¿Por qué sería esto un problema en una sola ubicación, una ubicación más pequeña? Si supiera la respuesta a esa pregunta, podría descubrir un trabajo temporal.

¿Es posible que el problema real sea algo completamente diferente y esté causando un problema de grupo de conexión? Por ejemplo, tal vez el balanceo de carga en los servidores es una manguera o algo está mal con el servidor web que está teniendo el problema.

Respuesta

3

Si aloja esto en IIS 6 o superior (creo), puede forzar el reciclado de la agrupación de aplicaciones de forma programada. Tuve que hacer esto con una aplicación remota que no estaba cerrando conexiones a una base de datos Oracle; colocamos los objetos en su propio grupo de aplicaciones y luego lo configuramos para reciclar cada hora. Esto funcionó durante unos meses mientras rastreamos el problema y lanzamos una solución.

+0

Gracias, le daré una oportunidad. – dwidel

5

Una solución rápida puede ser aumentar el tamaño de la piscina en su cadena de conexión. Agregue esta propiedad Max Pool Size=1000 para que su cadena se vea como es decir.

Data Source=server;Initial Catalog=db;User ID=user; Password=pwd;Max Pool Size=1000 
0

Asegúrese de cerrar toda la cadena de conexión después de la tarea.

+0

Creo que quería decir "cerrar todas las conexiones después de la tarea". – Germstorm

Cuestiones relacionadas