Comment résoudre l'erreur « could not send data to client » (Impossible d'envoyer des données au client) ou « could not receive data from client » (Impossible de recevoir des données du client) lors de la connexion à mon instance DB PostgreSQL Amazon RDS PostgreSQL ou Aurora PostgreSQL ?

Dernière mise à jour : 04-05-2021

J'ai essayé d'exécuter une requête sur mon instance de base de données Amazon Relational Database Service (Amazon RDS) PostgreSQL ou Amazon Aurora PostgreSQL. Mais quand je l'ai fait, j'ai reçu l'une des erreurs suivantes :

  • « could not send data to client » (Impossible d'envoyer des données au client)
  • « could not receive data from client » (n'a pas pu recevoir de données du client)

Brève description

Si un processus backend dans une instance de base de données Amazon RDS ne peut pas envoyer à partir d'un client ou recevoir d'un client, le processus backend enregistre l'une des erreurs suivantes dans le journal PostgreSQL :

  • « could not send data to client » (Impossible d'envoyer des données au client)
  • « could not receive data from client » (n'a pas pu recevoir de données du client)

Solution

Ces erreurs peuvent se produire pour de nombreuses raisons. Passez en revue les étapes ci-dessous pour résoudre ce problème.

Vérifier si la vitalité du client

Vérifiez ce point en premier lieu. Si le processus client s'est bloqué en raison d'OOM, par exemple, la session peut s'être interrompue de manière incorrecte. Cette interruption peut provoquer l'une ou l'autre de ces erreurs.

Raccourcir les paramètres tcp_keepalives_idle et tcp_keepalives_interval

Si le temps de traitement d'une requête est trop long, la session peut s'être interrompue incorrectement à partir du client. Pour résoudre ce problème, augmentez le paramètre de délai d'expiration du client. Vous pouvez également raccourcir les paramètres tcp_keepalives_idle et tcp_keepalives_interval pour vérifier la vitalité du client à partir du processus back-end. Pour plus d'informations, consultez Modification de paramètres dans un groupe de paramètres de base de données.

Pour vérifier les valeurs par défaut de tcp_keepalives_idle et tcp_keepalives_interval, exécutez la commande suivante à l'aide d'un client PostgreSQL tel que psql :

SELECT name, setting FROM pg_settings WHERE name LIKE 'tcp_keepalives_%'

Vérifier la connectivité

Si l'erreur se produit indépendamment de la réduction du temps de traitement des requêtes, vérifiez la connectivité entre le client et l'instance de la base de données.

Après le basculement à partir de la session rdsadmin

Si l'erreur se produit après le basculement à partir d'une session rdsadmin, vous pouvez ignorer l'erreur.


Documentation PostgreSQL pour postgres_fdw

Documentation PostgreSQL pour les connexions et l'authentification

Définition des paramètres de persistance TCP

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?