Maison > développement back-end > Golang > Pourquoi le serveur HTTP My Go échoue-t-il aux tests ApacheBench avec des erreurs « Connexion refusée » ou « Opération expirée » ?

Pourquoi le serveur HTTP My Go échoue-t-il aux tests ApacheBench avec des erreurs « Connexion refusée » ou « Opération expirée » ?

Patricia Arquette
Libérer: 2024-12-23 03:32:14
original
184 Les gens l'ont consulté

Why is My Go HTTP Server Failing ApacheBench Tests with

Dépannage des problèmes de connectivité avec le serveur HTTP Go sous ApacheBench

Votre serveur HTTP Go rencontre des problèmes de connectivité lors des tests ApacheBench. ApacheBench renvoie des erreurs telles que « Connexion refusée » ou « Opération expirée », indiquant un problème avec la capacité du serveur à traiter les demandes entrantes.

Identification de la cause première : épuisement du port

Après enquête, il devient évident que le serveur manque de ports éphémères. macOS a une plage de ports éphémères par défaut de 49152 à 65535, ce qui est insuffisant pour gérer un volume élevé de requêtes simultanées sans keepalive.

Mécanisme d'épuisement des ports

Chaque HTTP La requête /1.0 sans keepalive consomme un port éphémère unique sur le serveur. Lorsque cette plage de ports est épuisée, le système d'exploitation met en file d'attente les requêtes pour les ports inutilisés.

Impact sur les performances

Une fois la file d'attente des ports remplie, le système d'exploitation limite davantage les ports entrants. relations. Par conséquent, les clients peuvent rencontrer des échecs de connexion ou des délais d'attente.

Atténuer le problème

Pour atténuer le problème, envisagez les options suivantes :

  • Utilisez HTTP/1.1 ou Keepalive (avec ApacheBench) : ApacheBench fournit une option -k pour activer HTTP/1.1 keepalive. Cela permet de réutiliser les connexions en fonction des paramètres de concurrence de l'outil, réduisant ainsi la consommation de ports.
  • Employer un générateur de charge avec Keepalive : d'autres générateurs de charge, tels que wrk, prennent en charge HTTP/1.1. et des capacités Keepalive prêtes à l'emploi. L'utilisation de ces outils élimine le besoin d'une configuration manuelle de keepalive.
  • Optimiser les performances du serveur (facultatif) : même si le code de votre serveur effectue un travail minimal, son optimisation peut améliorer les performances globales et réduire la charge sur le serveur. générateur de charge et système d'exploitation. Pensez à intégrer un travail significatif dans le code 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal