Comment résoudre les problèmes liés aux exceptions d'E/S pour un point de terminaison HTTP ou HTTPS ?

Lecture de 3 minute(s)
0

Je souhaite corriger l'erreur « Exception d’E/S dans HttpClient » qui survient lorsque j'envoie un message à un point de terminaison HTTP ou HTTPS à partir d'Amazon Simple Notification Service (Amazon SNS).

Brève description

Amazon SNS envoie des liens SubscriptionURL ou des messages de notification à un ou plusieurs points de terminaison HTTP ou HTTPS. Cette action peut générer l'erreur « Exception d’E/S dans HttpClient » dans l'attribut ProviderResponse pour les points de terminaison HTTP ou HTTPS.

Voici quelques causes courantes à l'origine cette erreur :

  • Une erreur de bas niveau provenant du serveur et indiquant que la connexion a échoué en raison d'un nom d'hôte non valide ou parce que le serveur TCP n'écoute pas.
  • La connexion TCP s'est interrompue brusquement en raison d'une perte de connexion Internet.
  • Le serveur n'est pas en mesure d'établir une connexion en raison d'un trafic réseau élevé (ou d'une bande passante réduite).

Résolution

  1. « Exception d’E/S dans HttpClient » est une erreur générique. Vous pouvez résoudre le problème en renvoyant le message manuellement. La rubrique SNS offre toutefois un mécanisme de nouvelle tentative pour les messages ayant échoué. Lorsque vous configurez le mécanisme de nouvelle tentative pour une politique SNS donnée, vous devez tenir compte des points suivants :

    • Le nombre total de nouvelles tentatives doit être supérieur ou égal à la somme des nouvelles tentatives sans délai, avec délai minimum et avec délai maximal.

      numRetries >= numNoDelayRetries + numMinDelayRetries + numMaxDelayRetries
    • Le nombre de nouvelles tentatives (« function retries ») qui se produisent pendant la phase d’interruption :

      Back off function retries = numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
    • La durée totale maximale des nouvelles tentatives est de 3 600 secondes (la somme de toutes les durées nécessaires pour les nouvelles tentatives). Il s'agit d'une limite stricte qui ne peut pas être étendue.

      Total time for retries = Pre-backoff phase (numMinDelayRetries * minDelayTarget) + Post-backoff phase (numMaxDelayRetries * maxDelayTarget) + (Back off function retries)
  2. Vérifiez que le serveur dispose de suffisamment de bande passante pour pouvoir recevoir et traiter toutes les demandes entrantes.

  3. Exécutez la commande netstat pour vérifier si le serveur TCP écoute activement toutes les demandes entrantes. Pour en savoir plus, consultez la page Commande netstat sur le site Web d'IBM.

  4. Vérifiez la validité du nom d'hôte. Celui-ci ne peut pas contenir de trait de soulignement. Par exemple, votre_hostname n'est pas un format autorisé.

Informations connexes

Nouvelle tentative de distribution de messages Amazon SNS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois