¿Cómo puedo solucionar el error «Error de lectura de los paquetes de comunicación» en Amazon RDS para MySQL o en la versión compatible con MySQL de Aurora?

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 de «Error de lectura de los paquetes de comunicación».

Descripción corta

Si las conexiones servidor-cliente se interrumpen, no se cierran de forma adecuada o no se llevan a cabo correctamente, Amazon RDS aumenta el contador de estado tanto de aborted_clients como de aborted_connects. El parámetro aborted_clients describe el número de conexiones que Amazon RDS canceló porque el cliente se interrumpió sin cerrar la conexión correctamente. El parámetro aborted_connects describe el número de intentos fallidos de conectarse al servidor MySQL.

Si el valor de cualquiera de estos parámetros aumenta, recibirá el siguiente error en sus registros:

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

Si el valor de log_error_verbosity supera 2, también recibirá el error anterior. El parámetro log_error_verbosity especifica la verbosidad para administrar los eventos destinados al registro de errores.

Para obtener más información, consulte B.3.2.9 Errores de comunicación y conexiones anuladas en el sitio web del servidor MySQL.

Los siguientes factores pueden provocar el error Error de lectura de los paquetes de comunicación:

  • Incompatibilidad de cliente o controlador.
  • Firewalls o proxies que pueden cerrar cualquier conexión inactiva o bloquearla.
  • Una conexión cliente-servidor que se cierra incorrectamente y da como resultado un mayor número de conexiones inactivas dentro de 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: Si el valor es demasiado pequeño o las consultas requieren más memoria de la asignada a Amazon RDS para MySQL, recibirá el error anterior.

Resolución

Compruebe los valores de los parámetros de tiempo de espera de conectividad. Tras identificar la causa principal del problema, cambie el valor del parámetro en función del problema que haya identificado. A continuación, supervise los registros de errores de MySQL mientras prueba el nuevo valor.

Solución de problemas de la configuración

Compruebe si está utilizando los valores predeterminados del grupo de parámetros de Amazon RDS. Es posible que deba modificar el valor de tiempo de espera de conectividad predeterminado para la instancia de base de datos. Para obtener más información, consulte la sección Parámetros relacionados con los tiempos de espera de conectividad de las Prácticas recomendadas para configurar los parámetros de Amazon RDS para MySQL, parte 3: Parámetros relacionados con la seguridad, la capacidad de administración operativa y el tiempo de espera de conectividad.

Establezca un valor más alto para connect_timeout para comprobar si el valor reduce la aparición del error de lectura de los paquetes de comunicación. El parámetro connect_timeout define cuántos segundos debe esperar la instancia de base de datos del servidor MySQL antes de que la instancia de base de datos responda con un protocolo de enlace incorrecto. Para obtener más información, consulte connect_timeout en el sitio web de MySQL.

También puede modificar los tiempos de espera interactive_timeout y wait_timeout. Para obtener más información sobre estos parámetros, consulte 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.

Si la instancia debe administrar consultas grandes, columnas BLOB grandes o cadenas largas, aumente el valor de max_allowed_packet. Si una fila contiene más datos que el valor max_allowed_packet, recibirá un error. Para obtener más información, consulte la sección max_allowed_packet de las Prácticas recomendadas para configurar los parámetros de Amazon RDS para MySQL, parte 3: Parámetros relacionados con la seguridad, la capacidad de administración operativa y el tiempo de espera de conectividad. También puede consultar max_allowed_packet en el sitio web de MySQL. Además, aumente los valores net_write_timeout y net_read_timeout.

Nota: Puede establecer net_write_timeout y net_read_timeout en el mismo valor que wait_timeout. Para obtener más información, consulte net_write_timeout y net_read_timeout en el sitio web de MySQL.

Asegúrese de que las conexiones de RDS para MySQL o de la versión compatible con MySQL de Aurora estén cerradas correctamente. Antes de salir de la base de datos, llame a la función mysql_close() desde la aplicación cliente.

Solución de problemas avanzada

Si sigue recibiendo el mensaje de error de lectura de los paquetes de comunicación, lleve a cabo una de las siguientes acciones:

Información relacionada

¿Cómo modifico los valores de un grupo de parámetros de base de datos de Amazon RDS?

¿Por qué se han interrumpido las conexiones de base de datos en mi instancia de base de datos de RDS?

¿Cómo puedo activar los registros en un clúster de Aurora Serverless para poder ver y descargar los registros?