Saltar al contenido

¿Cómo puedo solucionar el error «Got an error reading communication packets» en Amazon RDS para MySQL o en Aurora compatible con MySQL?

6 minutos de lectura
0

Utilizo una instancia de base de datos compatible con MySQL de Amazon Aurora o de Amazon Relational Database Service (Amazon RDS) para MySQL. He recibido el mensaje de error «Got an error reading communication packets».

Descripción breve

Recibes el mensaje de error «[Warning] Aborted connection abc to db: 'database name' user: 'user name' host: 'host IP' (Got an error reading communication packets)».

Recibes el mensaje de error anterior cuando aumenta el valor del parámetro aborted_clients o aborted_connects. Amazon RDS cancela la conexión y aumenta el contador de estado del parámetro aborted_clients cuando el cliente se desactiva y no cierra la conexión o esta se interrumpe. El valor del parámetro aborted_connects aumenta cuando el cliente no se conecta al servidor MySQL.

Si el valor de log_error_verbosity es superior a dos, también recibirás el mensaje de error. El parámetro log_error_verbosity especifica la verbosidad para administrar los eventos que son para el registro de errores. Para obtener más información, consulta Communication errors and aborted connections (Errores de comunicación y conexiones anuladas) en el sitio web de MySQL.

Los siguientes factores pueden provocar el mensaje de error «Got an error reading communication packets»:

  • Incompatibilidad de cliente o controlador.
  • Firewalls o proxies que cierran cualquier conexión inactiva o la bloquean.
  • Una conexión cliente-servidor cerrada incorrectamente que da como resultado un mayor número de conexiones inactivas dentro de Amazon RDS para MySQL.
  • Una aplicación cliente que termina una conexión de forma incorrecta.
    Nota: MySQL cierra forzosamente las conexiones inactivas de ejecución prolongada.
  • Conexiones inactivas que superan los umbrales de espera wait_timeout o interactive_timeout.
  • Una conexión de cliente que supera el umbral de segundos de connect_timeout al obtener un paquete de conexión.
  • Valores insuficientes para parámetros como net_write_timeout y net_read_timeout.
  • Se ha superado el valor del parámetro max_allowed_packet.
    Nota: El problema se produce cuando el valor es demasiado pequeño o las consultas requieren más memoria de la que asignas a Amazon RDS para MySQL.

Resolución

Modificación de los parámetros de tiempo de espera

Para identificar la causa del problema, revisa los parámetros relacionados con los tiempos de espera de conectividad agotados. Si usas valores predeterminados para tu grupo de parámetros, cambia el valor de tiempo de espera de conectividad predeterminado de la instancia de base de datos.

Para cambiar el parámetro de conectividad, sigue estos pasos:

  1. Abre la consola de Amazon RDS.
  2. En el panel de navegación, elige Grupos de parámetros.
  3. Elige el grupo de parámetros de la instancia de base de datos.
  4. Selecciona Editar.
  5. Busca el parámetro de tiempo de espera de conectividad y, a continuación, cambia el valor.
    Nota: Después de cambiar los valores, supervisa los registros de errores de MySQL cuando pruebes el nuevo valor.

connect_timeout

Establece un valor más alto para connect_timeout para comprobar si el valor reduce la aparición de este problema. El parámetro connect_timeout define cuántos segundos debe esperar la instancia de base de datos del servidor MySQL antes de responder con un protocolo de enlace incorrecto. Para obtener más información, consulta connect_timeout en el sitio web de MySQL.

interactive_timeout and wait_timeout

También puedes modificar los tiempos de espera interactive_timeout y wait_timeout. Para obtener más información sobre estos parámetros, consulta wait_timeout o interactive_timeout en el sitio web de MySQL. Las aplicaciones que utilizan agrupaciones de conexiones, como Java, deben tener tiempos de espera que coincidan con la configuración del grupo de conexiones.

max_allowed_packet

Si la instancia debe administrar consultas grandes, columnas de objetos binarios grandes (BLOB) o cadenas largas, aumenta el valor de max_allowed_packet. Si una fila contiene más datos que el valor de max_allowed_packet, recibirás un error. Para obtener más información, consulta max_allowed_packet en el sitio web de MySQL.

net_write_timeout and net_read_timeout

Aumenta los valores de net_write_timeout y net_read_timeout. Puedes establecer net_write_timeout y net_read_timeout en el mismo valor que wait_timeout. Para obtener más información, consulta net_write_timeout y net_read_timeout en el sitio web de MySQL.

Llama a la función mysql_close() desde la aplicación cliente para asegurarte de que las conexiones de Amazon RDS para MySQL o Aurora compatible con MySQL se cierren correctamente.

Uso de otros métodos de solución de problemas

Si sigues recibiendo el mensaje de error «Got an error reading communications packets», lleva a cabo una de las siguientes acciones:

Información relacionada

¿Por qué se interrumpieron las conexiones a la base de datos en mi instancia de base de datos de Amazon RDS?

¿Cómo puedo ver y descargar los registros de un clúster de base de datos de Aurora sin servidor?