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.
Temas
- Identificar las sesiones y consultas problemáticas
- Seguir las prácticas recomendadas de administración de conexiones
- Escalar verticalmente la instancia si se están limitando de forma controlada los recursos
- Verificar los principales hosts y usuarios
- Consultar las tablas performance_schema
- Verificar los estados de los subprocesos de sus consultas
- Auditar las solicitudes y consultas
- Agrupar las conexiones de base de datos
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
Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/
. -
En el panel de navegación, seleccione Información sobre rendimiento.
-
Seleccione la instancia de base de datos.
-
En Database load (Carga de base de datos), elija Slice by wait (Corte por espera).
-
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:
-
Utilice la agrupación de conexiones.
Puede aumentar gradualmente el número de conexiones según sea necesario. Para obtener más información, consulte el documento técnico Amazon Aurora MySQL Database Administrator’s Handbook
. -
Utilice un nodo lector para redistribuir el tráfico de solo lectura.
Para obtener más información, consulte Réplicas de Aurora y Conexiones de puntos de conexión de Amazon Aurora.
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
ynetwork 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 Amazon 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 Información sobre rendimiento.
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.