Cliente : ClientRead - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Cliente : ClientRead

L'événement Client:ClientRead se produit lorsqu'Aurora PostgreSQL attend de recevoir des données du client.

Versions de moteur prises en charge

Ces informations sur les événements d'attente s'appliquent à Aurora PostgreSQL 10 et versions ultérieures.

Contexte

Un cluster de bases de données Aurora PostgreSQL attend de recevoir des données du client. Le cluster de bases de données Aurora PostgreSQL doit recevoir les données du client avant de pouvoir envoyer plus de données au client. La période pendant laquelle le cluster attend avant de recevoir les données du client est un événement Client:ClientRead.

Causes probables de l'augmentation du nombre d'événements d'attente

Les principales causes de l'événement d'attente Client:ClientRead sont les suivantes :

Latence réseau accrue

La latence réseau peut être accrue entre le cluster de bases de données Aurora PostgreSQL et le client. Une latence réseau plus élevée augmente le temps de réception des données du client par le cluster de bases de données.

Charge accrue sur le client

Le client peut être soumis à une pression exercée sur l'UC ou à une saturation du réseau. Une augmentation de la charge exercée sur le client peut retarder la transmission des données du client vers le cluster de bases de données Aurora PostgreSQL.

Nombre excessif d'allers-retours réseau

Un grand nombre d'allers-retours réseau entre le cluster de bases de données Aurora PostgreSQL et le client peut retarder la transmission des données du client vers le cluster de bases de données Aurora PostgreSQL.

Opération de copie importante

Lors d'une opération de copie, les données sont transférées du système de fichiers du client vers le cluster de bases de données Aurora PostgreSQL. L'envoi d'une grande quantité de données au cluster de bases de données peut retarder la transmission des données du client vers le cluster de bases de données.

Connexion client inactive

Une connexion à une instance de base de données Aurora PostgreSQL est inactive dans l'état de transaction et attend qu'un client envoie des données supplémentaires ou émette une commande. Cet état peut entraîner une augmentation des événements Client:ClientRead.

PgBouncer utilisé pour le regroupement de connexions

PgBouncer possède un paramètre de configuration réseau de bas niveau appelépkt_buf, qui est défini sur 4 096 par défaut. Si la charge de travail envoie des paquets de requêtes de plus de 4 096 octets PgBouncer, nous vous recommandons d'augmenter le pkt_buf paramètre à 8 192. Si le nouveau paramètre ne permet pas de réduire le nombre d'événements Client:ClientRead, nous vous recommandons d'augmenter le paramètre pkt_buf en le définissant sur des valeurs plus élevées, telles que 16 384 ou 32 768. Si le texte de la requête est volumineux, un paramètre plus élevé peut être particulièrement utile.

Actions

Nous vous recommandons différentes actions en fonction des causes de votre événement d'attente.

Placez les clients dans la même zone de disponibilité et le même sous-réseau VPC que le cluster

Pour réduire la latence réseau et augmenter son débit, placez les clients dans la même zone de disponibilité et le même sous-réseau Virtual Private Cloud (VPC) que le cluster de bases de données Aurora PostgreSQL. Assurez-vous que les clients sont aussi proches que possible du cluster de bases de données géographiquement parlant.

Procédez à la mise à l'échelle du client

À l'aide d'Amazon CloudWatch ou d'autres indicateurs de l'hôte, déterminez si votre client est actuellement limité par le processeur ou la bande passante du réseau, ou les deux. Si le client est soumis à des contraintes, mettez-le à l'échelle en conséquence.

Utilisez des instances de la génération actuelle

La classe d'instance de base de données que vous utilisez ne prend peut-être pas en charge les trames jumbo. Si vous exécutez votre application sur Amazon EC2, pensez à utiliser une instance de génération actuelle pour le client. Configurez également l'unité de transmission maximale (MTU) sur le système d'exploitation client. Cette technique peut réduire le nombre d'allers-retours réseau et augmenter le débit du réseau. Pour plus d'informations, consultez la section Cadres Jumbo (9001 MTU) dans le guide de l'utilisateur Amazon EC2.

Pour plus d'informations sur les classes d'instances de base de données, consultez Classes d'instances de base de données Amazon Aurora. Pour déterminer quelle classe d'instance de base de données est l'équivalent d'un type d'instance Amazon EC2, placez db. avant le nom du type d'instance Amazon EC2. Par exemple, l'instance Amazon EC2 r5.8xlarge est l'équivalent de la classe d'instance de base de données db.r5.8xlarge.

Augmentez la bande passante réseau

Utilisez NetworkReceiveThroughput les CloudWatch métriques NetworkTransmitThroughput Amazon pour surveiller le trafic réseau entrant et sortant sur le cluster de base de données. Ces métriques peuvent vous aider à déterminer si la bande passante réseau est suffisante pour votre charge de travail.

Si la bande passante réseau est insuffisante, augmentez-la. Si le AWS client ou votre instance de base de données atteint les limites de bande passante du réseau, le seul moyen d'augmenter la bande passante est d'augmenter la taille de votre instance de base de données.

Pour plus d'informations sur CloudWatch les métriques, consultez CloudWatch Métriques Amazon pour Amazon Aurora.

Surveillez les valeurs maximales des métriques de performances réseau

Si vous utilisez des clients Amazon EC2, Amazon EC2 fournit des valeurs maximales pour les métriques de performances réseau, y compris pour la bande passante réseau entrante et sortante agrégée. Il assure également le suivi des connexions pour garantir un retour optimal des paquets et un accès aux services locaux de liaison pour des services tels que le système de noms de domaine (DNS). Pour surveiller ces valeurs maximales, utilisez un pilote réseau amélioré à jour et surveillez les performances réseau de votre client.

Pour plus d'informations, consultez Surveiller les performances réseau de votre instance Amazon EC2 dans le guide de l'utilisateur Amazon EC2 et Surveiller les performances réseau de votre instance Amazon EC2 dans le guide de l'utilisateur Amazon EC2.

Surveillez les transactions dont l'état est « idle in transaction » (transaction inactive)

Déterminez si le nombre de connexions idle in transaction est croissant. Pour ce faire, surveillez la colonne state de la table pg_stat_activity. Vous pouvez identifier la source des connexions en exécutant une requête semblable à la suivante.

select client_addr, state, count(1) from pg_stat_activity where state like 'idle in transaction%' group by 1,2 order by 3 desc