Conexión anulada (se produjo un error al leer los paquetes de comunicación)

8

El error mysql.log muestra

[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)

Mientras que el lado del cliente obtiene:

Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Lost connection to MySQL server at 'reading authorization packet', system error: 0
and after a while: Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

Leí el manual de mysql sobre esto, y muchos otros hilos. Entonces cambié algunos valores en my.cnf

max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G

Miró el registro de consultas de una conexión rota:

22400 Connect user@host on dbname
22400 Query SELECT @@sql_mode
22400 Query     SET SESSION sql_mode=''
22400 Query     SET NAMES utf8
22400 Init DB   dbname
22400 Init DB   dbname

Estado de la tabla verificada. bind-address es la IP del servidor pero necesito poder conectarme desde afuera.

Aborted_connects is 196
PiTheNumber
fuente
¿Se puede verificar la calidad de conexión entre los dos hosts? 100 pings básicos deberían hacer ..
melsayed

Respuestas:

4

Basado en los datos limitados, me pregunto si tiene un firewall entre el cliente y el servidor MySQL (puede estar en los hosts directamente) que permite 3306 al servidor MySQL pero está bloqueando los paquetes de respuesta a la solicitud SYN inicial.

Es posible que desee realizar un volcado de paquetes en ambos lados para resolver lo que está sucediendo en el lado TCP y / o verificar cualquier firewall que exista entre ambos lados.

Matthew Ife
fuente
Gracias. ¿Qué datos podría proporcionar para aclarar esto? No tengo un cortafuegos de mi lado, no estoy seguro del otro lado. Principalmente la conexión funciona, así que supongo que no es un firewall. Intenté el volcado de paquetes pero hay mucho tráfico y el problema se muestra solo unas pocas veces al día. No pude definir un filtro que solo capture los paquetes que necesito.
PiTheNumber
4

Sospecho que este no es un problema de MySQL como tal.

Verifique que la capa de transporte esté bien. ¿Se puede obtener una conexión TCP usando telnet [db_server] 3306?

¿Su cliente y servidor están de acuerdo sobre si la conexión debe estar encriptada SSL?

No puedo pensar en muchas situaciones en las que me gustaría ejecutar una conexión mysql a través de Internet público, lo que sospecho es lo que quiere decir con 'poder conectarse desde afuera'. Si no se encripta, este es un gran riesgo de seguridad, y la sobrecarga de configurar SSL para cada conexión es demasiado alta para la mayoría de los usos. Es posible que desee ver el uso de un túnel encriptado persistente de algún tipo.

mc0e
fuente
telnet connect y la mayoría de las conexiones funcionan bien solo de vez en cuando aparece este problema. Sí, es una conexión a través de internet público. Me gustaría tener cifrado aquí pero no controlo el otro extremo. De todos modos, primero necesito estabilizar la conexión.
PiTheNumber