2012-02-20 13 views
5

Este me está matando. Tenemos una aplicación ASP.NET/Mono en una base de datos MySQL. Durante meses hemos estado plagados de una ocurrencia completamente aleatoria pero consistente de "Imposible conectarse a cualquiera de los hosts MySQL especificados". De ninguna manera soy un profesional de MySQL, y espero que esto sea algo tonto.MySql * completamente al azar * No se puede conectar a ninguno de los hosts MySQL especificados

Específicos:
MySQL 5.5.17
MySQL Connector/Net 6.4.4
Mono 2.10.8
MonoDevelop 2.8.6.5

Cadena de conexión: SERVER = localhost, 3306; Database = xxx ; UID = xxx; PWD = xxx; TIEMPO DE CONEXIÓN TIME = 90; Encrypt = false;

Max_connections se establece en 150. Nunca hay más de 5 conexiones, y todas están activas (probablemente debido a la agrupación).

  • La aplicación es C# ASP.NET 3.5. Se ejecuta como una roca sólida durante años en Windows/IIS. Hace nueve meses, nuestro mercado nos llevó a abandonar Windows, por lo que (podríamos agregar fácilmente) moví todo a Mono/Apache.

  • El problema solo ocurre en el lado Mono, pero eso es crítico ya que hemos retirado nuestro soporte para Windows.

  • Sucede en promedio unas 10 veces por hora, pero el espacio varía enormemente.

  • El problema se ha visto en las siguientes configuraciones:

Ubuntu 11/Apache2/mod_mono
OSX Lion/Apacke2/mod_mono
Ubuntu 11/xsp2/MonoDevelop servidor de depuración
OSX Lion/xsp2/MonoDevelop servidor de depuración

  • Ha metido con keepaliv e, wait_timeout, connectionreset, etc. en vano. Los tiempos parecen no tener ningún efecto. El error es instantáneo en conn.open, no después de ningún tiempo de espera de conexión.

  • Aquí hay una pista: la aplicación absolutamente no se ejecutará con Pooling = false. Casi todos los intentos de conexión fallan. Por supuesto que quiero unirme, pero no estoy seguro de por qué no funcionaría sin eso.

  • La aplicación tiene un "latido" incorporado (la sesión del usuario en la base de datos) - cada 2 minutos.

  • ¿Lo más enloquecedor de todos? No se puede reproducir bajo demanda en un entorno en ejecución: es aleatorio. He examinado tamaños de consultas, tiempos de ejecución, etc.

  • En exactamente un escenario puedo hacerlo realidad: en el arranque inicial de un servidor Ubuntu o OSX, la primera vez que Mono hace su primera conexión con MySQL - sucederá entonces Después de eso, nadie sabe.

+0

¿Qué hay de los límites de max_connections? Podría estar alcanzando el máximo permitido varias veces. –

+0

Parece poco probable dado que ocurre en la primera conexión – DNA

+0

+1 por una pregunta bien hecha, pero creo que le iría mejor en serverfault.com –

Respuesta

0

Ok, esto es viejo, pero he perdido tanto tiempo en esto, he de compartir esta ahorro de artículo que finalmente encontré la vida: Getting Mono and Mysql to play nice together

Y resumo para el caso de que el el enlace termina en 404 algún día: CUALQUIER variable de la cadena de conexión DEBE definirse. Entonces, sí, eso incluye puerto, que nunca antes tuve que definir en una cadena de conexión en mi vida.

Para mí, resolvió el problema.

Cuestiones relacionadas