Error de conexión a la base de datos mysql


9

Mi aplicación necesita hacer conexiones bastante frecuentes a una base de datos mysql en otra máquina. Sin embargo, recibo errores frecuentes en la conexión; Por lo general, finalmente puedo conectarme, pero después de muchos intentos. El mensaje de error que recibo es:

Mysql.mysql(): Couldn't connect to SQL-server: Lost connection to MySQL server at 'reading authorization packet', system error: 2

He leído la información aquí: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html y también los comentarios al error http://bugs.mysql.com/bug .php? id = 28359 .

Hay bastantes conexiones abortadas como puede ver:

mysql> MOSTRAR ESTADO GLOBAL COMO 'Aborted_connects';
+ ------------------ + ------- +
El | Nombre_variable | Valor |
+ ------------------ + ------- +
El | Conexiones abortadas | 2540 |
+ ------------------ + ------- +

Aumenté el tiempo de espera de 5 a 15 segundos:

mysql> muestra variables como 'connect_timeout';
+ ----------------- + ------- +
El | Nombre_variable | Valor |
+ ----------------- + ------- +
El | connect_timeout | 15 |
+ ----------------- + ------- +

Pero esto no ha ayudado. ¿Alguna sugerencia de cómo depurar esto? Hace que la interacción de la base de datos sea terriblemente lenta cuando, en promedio, tiene que intentar conectarse 5 veces antes de que funcione.

Todavía no he tratado de mantener la conexión abierta durante toda la vida de la aplicación, ¿sería mejor? ¿Cómo evito que se cierre la conexión?

Si ayuda a la computadora con los problemas es Windows 7 de 32 bits, mientras que el servidor mysql está en Debian Linux.


Sé que esto es solo una venda, pero la URL del informe de error dice: "He solucionado el problema al aumentar la variable global connect_timeout a 30 segundos". ¿Quieres probar un valor más alto?
JoseK

1
Comodidad fría, pero esta es una pregunta bien escrita. Excelente seguimiento del artículo de Eric S. Raymond ... +1 para ti, y buena suerte.
gWaldo

@JoseK, por supuesto, puedo intentarlo, pero dudo que haga mucha diferencia, ya que no vi ninguna mejora al aumentar de 5 a 15.
Zitrax

¿Es esta una de las variables que no establece límite si el valor se establece en 0?
pjmorse

1
¿Estás seguro de que no hay algún tipo de problema de conectividad entre las máquinas, tal vez un problema de red?
Warner

Respuestas:


2

Al revisar todos los detalles del error y los informes, sospecho que hay un problema del lado de la red o del cliente aquí. Algo está corrompiendo o agregando demasiada latencia a los datos de mysql.

En una red clara, haga un seguimiento de wirehark y verifique cómo es la conversación. Asegúrese de que no se forme tráfico en ningún lado. Parece un problema de 64 bits solo, así que verifique una compilación de 32 bits solo para asegurarse de que sea el mismo problema. Verifique en un cuadro de Windows XP: ¡M $ hizo algunas cosas funky en la pila de red en Vista que hizo que apestara un poco de tiempo! ¡No tenemos fin de problemas de red con máquinas Vista y Win7!

Si logras un rastro de Wirehark, por favor pega y pon el enlace como a todos nos gustaría ver, creo.


¿Qué quieres decir con "parece un problema de 64 bits"? Esta es una instalación de 32 bits. Y lo siento, mencioné Vista, esto es Win7, descripción corregida.
Zitrax

No estoy muy familiarizado en la depuración con wireshark. Pero algunas cosas me parecen extrañas, hay algunos paquetes RST marcados y retransmisión TCP, y el tiempo de algunos de los paquetes es negativo, como -257.3 segundos.
Zitrax

¿Puedes usar otro interruptor y volver a probar por favor? diferente marca si tienes uno? si pudiera pastebin o código postal y hacer el volcado Wireshark disponibles podríamos echar un vistazo ...
Khushil

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.