io/socket/sql/client_connection - Amazon Aurora

io/socket/sql/client_connection

El evento io/socket/sql/client_connection se produce cuando un subproceso está en proceso de controlar una nueva conexión.

Versiones del motor admitidas

Esta información de evento de espera es compatible con las siguientes versiones del motor:

  • Aurora MySQL, versiones 2 y 3

Context

El evento io/socket/sql/client_connection indica que mysqld está ocupado con la creación de subprocesos para controlar las nuevas conexiones de clientes entrantes. En este escenario, el procesamiento del responder a las nuevas solicitudes de conexión de clientes se ralentiza mientras las conexiones esperan a que se asigne el subproceso. Para obtener más información, consulte Servidor MySQL (mysqld).

Causas probables del aumento de las esperas

Cuando este evento aparece más de lo normal, lo que posiblemente indica un problema de rendimiento, las causas típicas son las siguientes:

  • Se produce un aumento repentino de las nuevas conexiones de usuario desde la aplicación a la instancia de Amazon RDS.

  • La instancia de base de datos no puede procesar nuevas conexiones porque la red, la CPU o la memoria tienen una limitación controlada.

Acciones

Si io/socket/sql/client_connection domina la actividad de la base de datos, no indica necesariamente un problema de rendimiento. En una base de datos que no está inactiva, siempre hay un evento de espera activo. Actúe solo cuando el rendimiento se vea reducido. Recomendamos diferentes acciones en función de las causas del evento de espera.

Identificar las sesiones y consultas problemáticas

Si su instancia de base de datos tiene un cuello de botella, la primera tarea que debe realizar es buscar las sesiones y consultas que lo provocan. Para ver una entrada de blog útil, consulte Analyze Amazon Aurora MySQL Workloads with Performance Insights.

Para identificar sesiones y consultas que provocan un cuello de botella
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, seleccione Información sobre rendimiento.

  3. Seleccione la instancia de base de datos.

  4. En Database load (Carga de base de datos), elija Slice by wait (Corte por espera).

  5. En la parte inferior de la página, elija Top SQL (SQL principal).

    Las consultas de la parte superior de la lista son las que provocan la mayor carga de la base de datos.

Seguir las prácticas recomendadas de administración de conexiones

Para administrar sus conexiones, tenga en cuenta las siguientes estrategias:

Escalar verticalmente la instancia si se están limitando de forma controlada los recursos

Busque ejemplos de limitación controlada en los siguientes recursos:

  • CPU

    Verifique las métricas de Amazon CloudWatch para detectar usos elevados de la CPU.

  • Network

    Verifique el aumento del valor de las métricas de CloudWatch network receive throughput y network transmit throughput. Si la instancia ha alcanzado el límite de ancho de banda de red para la clase de instancia, considere la posibilidad de escalar verticalmente la instancia de RDS a un tipo de clase de instancia superior. Para obtener más información, consulte Clases de instancia de base de datos de Aurora.

  • Memoria que se puede liberar

    Verifique si hay una caída en la métrica de CloudWatch FreeableMemory. Considere, además, la posibilidad de activar el monitoreo mejorado. Para obtener más información, consulte Supervisión de las métricas del sistema operativo con Supervisión mejorada.

Verificar los principales hosts y usuarios

Utilice Información sobre rendimiento para verificar los principales hosts y usuarios. Para obtener más información, consulte Análisis de métricas mediante el panel de Performance Insights.

Consultar las tablas performance_schema

Para obtener un recuento preciso de las conexiones actuales y totales, consulte las tablas de performance_schema. Con esta técnica, podrá identificar el host o usuario de origen responsable de crear un gran número de conexiones. Por ejemplo, consulte las tablas performance_schema como se muestra a continuación.

SELECT * FROM performance_schema.accounts; SELECT * FROM performance_schema.users; SELECT * FROM performance_schema.hosts;

Verificar los estados de los subprocesos de sus consultas

Si su problema de rendimiento continúa, verifique los estados de los subprocesos de sus consultas. En el cliente mysql, ejecute el siguiente comando.

show processlist;

Auditar las solicitudes y consultas

Para verificar la naturaleza de las solicitudes y consultas de las cuentas de usuario, utilice la auditoría avanzada de Aurora MySQL. Para obtener información sobre cómo activar la auditoría, consulte Uso de auditorías avanzadas con un clúster de base de datos de Amazon Aurora MySQL.

Agrupar las conexiones de base de datos

Considere la posibilidad de utilizar Amazon RDS Proxy para la administración de conexiones. Con el proxy de RDS puede permitir a las aplicaciones agrupar y compartir conexiones de base de datos para mejorar su capacidad de escala. El proxy de RDS hace que las aplicaciones sean más resistentes a los errores de base de datos al conectarse automáticamente a una instancia de base de datos en espera mientras se preservan las conexiones de las aplicaciones. Para obtener más información, consulte Uso de Amazon RDS Proxy para Aurora.