Client:ClientWrite - Amazon Aurora

Client:ClientWrite

O evento Client:ClientWrite ocorre quando o Aurora PostgreSQL está aguardando para gravar dados no cliente.

Versões compatíveis do mecanismo

Essas informações sobre eventos de espera têm suporte para o Aurora PostgreSQL versão 10 e versões superiores.

Contexto

Um processo de cliente deve ler todos os dados recebidos de um cluster de banco de dados Aurora PostgreSQL para que esse cluster possa enviar mais dados. O tempo de espera do cluster antes de enviar mais dados ao cliente é um evento Client:ClientWrite.

A taxa de transferência da rede reduzida entre o cluster de banco de dados Aurora PostgreSQL e o cliente pode causar esse evento. A pressão da CPU e a saturação da rede no cliente também podem causar esse evento. Pressão da CPU é quando a CPU está totalmente utilizada e existem tarefas aguardando o tempo da CPU. Saturação de rede é quando a rede entre o banco de dados e o cliente está transportando mais dados do que ela pode manipular.

Possíveis causas do maior número de esperas

Causas comuns do surgimento do evento Client:ClientWrite nas principais esperas incluem:

Maior latência de rede

Pode haver maior latência de rede entre o cluster de banco de dados do Aurora PostgreSQL e o cliente. A latência de rede mais alta aumenta o tempo necessário para o cliente receber os dados.

Maior carga no cliente

Pode haver pressão da CPU ou saturação da rede no lado do cliente. Um aumento na carga do cliente atrasa o recebimento de dados do cluster de banco de dados Aurora PostgreSQL.

Grande volume de dados enviados ao cliente

O cluster de banco de dados Aurora PostgreSQL pode estar enviando uma grande quantidade de dados ao cliente. É possível que um cliente não consiga receber os dados tão rápido quanto o cluster os está enviando. Atividades como cópias de tabelas grandes podem resultar no aumento de eventos Client:ClientWrite.

Ações

Recomenda-se ações distintas, dependendo dos motivos do evento de espera.

Colocar os clientes na mesma zona de disponibilidade e sub-rede VPC que o cluster

Para reduzir a latência da rede e aumentar a taxa de transferência da rede, coloque clientes na mesma zona de disponibilidade e na mesma sub-rede de nuvem privada virtual (VPC) que o cluster de banco de dados do Aurora PostgreSQL.

Utilizar instâncias da geração atual

Em alguns casos, talvez você não esteja utilizando uma classe de instância de banco de dados que ofereça suporte a quadros jumbo. Se estiver executando sua aplicação no Amazon EC2, considere utilizar uma instância de geração atual para o cliente. Além disso, configure a MTU (unidade de transmissão máxima) no sistema operacional cliente. Essa técnica pode reduzir o número de idas e voltas pela rede e aumentar a taxa de transferência da rede. Consulte mais informações em Frames jumbo (9001 MTU) no Guia do usuário do Amazon EC2.

Para obter informações sobre classes de instância de banco de dados, consulte Classes de instância de banco de dados Aurora. Para determinar a classe de instância de banco de dados equivalente a um tipo de instância do Amazon EC2, coloque db. antes do nome do tipo de instância do Amazon EC2. Por exemplo, a instância r5.8xlarge do Amazon EC2 é equivalente à classe de instância de banco de dados db.r5.8xlarge.

Reduzir a quantidade de dados enviados ao cliente

Quando possível, ajuste a aplicação para reduzir a quantidade de dados que o cluster de banco de dados Aurora PostgreSQL envia ao cliente. Fazer esses ajustes alivia a contenção da CPU e da rede no lado do cliente.

Escalar seu cliente

Utilizando o Amazon CloudWatch ou outras métricas de host, determine se o cliente está atualmente restrito pela CPU ou pela largura de banda da rede, ou por ambas. Se o cliente estiver restrito, escale-o de acordo.