Maison >développement back-end >Golang >Pourquoi les requêtes « http.Get » de Go échouent-elles avec des erreurs de « réinitialisation de la connexion par un homologue » sur tous les continents ?
http.Get, concurrence et réinitialisation de connexion de Go par un homologue
Question :
Lors de l'utilisation des routines et des canaux Go pour un téléchargement efficace de pages Web, pourquoi certaines requêtes échouent-elles avec l'erreur « connexion réinitialisée par un homologue » lors de l'exécution à partir d'un serveur sur un autre continent ?
Réponse :
L'erreur « connexion réinitialisée par un homologue » indique que le serveur distant a intentionnellement ou involontairement mis fin à la connexion en raison de ressources limitées ou d'un lancement de connexion excessif. Pour résoudre ce problème :
1. Optimiser le niveau de concurrence :
Au lieu d'initier de nombreuses connexions parallèles (1 000 à 2 000), expérimentez différents niveaux de concurrence pour déterminer le nombre le plus efficace. Une concurrence excessivement élevée peut entraîner des réinitialisations de connexion.
2. Définissez Transport.MaxIdleConnsPerHost :
Configurez la valeur Transport.MaxIdleConnsPerHost pour qu'elle corresponde à votre niveau de concurrence. Lorsque cette valeur est inférieure au nombre de connexions simultanées, les connexions serveur peuvent être fermées après chaque requête et doivent être rouvertes. Ce processus d'ouverture et de fermeture récurrent peut ralentir la progression et potentiellement dépasser les limites de connexion au serveur.
3. Retarder les initiations de connexion :
Si le problème persiste malgré la configuration appropriée de MaxIdleConnsPerHost, envisagez d'introduire un léger délai entre les initiations de connexion pour éviter de déclencher des réinitialisations de connexion à partir du serveur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!