Client:ClientWrite - Amazon Aurora

Client:ClientWrite

El evento Client:ClientWrite ocurre cuando Aurora PostgreSQL espera escribir datos en el cliente.

Versiones del motor admitidas

Esta información de eventos de espera se admite para Aurora PostgreSQL versión 10 y posterior.

Context

Un proceso cliente debe leer todos los datos recibidos de un clúster de la base de datos de Aurora PostgreSQL antes de que el clúster pueda enviar más datos. El tiempo que el clúster espera antes de enviar más datos al cliente es un evento Client:ClientWrite.

La reducción del rendimiento de la red entre el clúster de base de datos de Aurora PostgreSQL y el cliente puede causar este evento. La presión de la CPU y la saturación de la red en el cliente también pueden causar este evento. La presión de la CPU es cuando la CPU se utiliza por completo y hay tareas esperando por el tiempo de la CPU. La saturación de la red es cuando la red entre la base de datos y el cliente transporta más datos de los que puede manejar.

Causas probables del aumento de las esperas

Las causas más comunes para que el evento Client:ClientWrite aparezca en el máximo de esperas son las siguientes:

Aumento de la latencia de la red

Puede haber un aumento de la latencia de la red entre el clúster de la base de datos PostgreSQL de Aurora y el cliente. Una mayor latencia de la red aumenta el tiempo necesario para que el cliente reciba los datos.

Aumento de la carga en el cliente

Puede haber presión de la CPU o saturación de la red en el cliente. Un aumento de la carga en el cliente retrasa la recepción de los datos del clúster de la base de datos de Aurora PostgreSQL.

Gran volumen de datos enviados al cliente

El clúster de la base de datos Aurora PostgreSQL se encuentra enviando una gran cantidad de datos al cliente. Es posible que el cliente no pueda recibir los datos tan rápido como el clúster los envía. Actividades como una copia de una tabla grande pueden resultar en un aumento de eventos Client:ClientWrite.

Acciones

Recomendamos diferentes acciones en función de las causas del evento de espera.

Coloque los clientes en la misma zona de disponibilidad y subred VPC que el clúster

Para reducir la latencia de la red y aumentar el rendimiento de la red, coloque los clientes en la misma zona de disponibilidad y subred de nube virtual privada (VPC) que el clúster de la base de datos de Aurora PostgreSQL.

Utilice las instancias de generación actual

En algunos casos, es posible que no utilice una clase de instancia de base de datos que admita tramas gigantes. Si ejecuta la aplicación en Amazon EC2, considere la posibilidad de utilizar una instancia de generación actual para el cliente. Además, configure la unidad de transmisión máxima (MTU) en el sistema operativo del cliente. Esta técnica podría reducir el número de viajes de ida y vuelta de la red y aumentar el rendimiento de la red. Para obtener más información, consulte Tramas gigantes (MTU 9001) en la Guía del usuario de Amazon EC2.

Para obtener información acerca de las clases de instancia de base de datos, consulte Clases de instancia de base de datos de Aurora. Para determinar la clase de instancia de base de datos que equivale a un tipo de instancia de Amazon EC2, coloque db. antes del nombre del tipo de instancia de Amazon EC2. Por ejemplo, la instancia de Amazon EC2 r5.8xlarge equivale a la clase de instancia de base de datos db.r5.8xlarge.

Reducir la cantidad de datos enviados al cliente

Cuando sea posible, ajuste la aplicación para reducir la cantidad de datos que el clúster de la base de datos de Aurora PostgreSQL envía al cliente. Hacer estos ajustes reduce la contención de la CPU y de la red en el cliente.

Escale el cliente

Con Amazon CloudWatch u otras métricas del anfitrión, determine si su cliente está actualmente limitado por la CPU o el ancho de banda de la red, o ambos. Si el cliente está restringido, escale su cliente en forma adecuada.