Apache APISIX vs NGINX
February 2, 2024
Selon les statistiques de W3Techs jusqu'en juin 2022, NGINX est le serveur web le plus utilisé au monde, détenant une part de marché substantielle de 33,6 %. Son adoption généralisée et ses performances remarquables ont établi un niveau de confiance élevé parmi les utilisateurs, en faisant un point de référence fréquent pour les comparaisons.
Résultats des tests de performance
Lors de tests pratiques, nous avons comparé les performances de APISIX et de NGINX dans un scénario simple, avec les résultats suivants :
-
APISIX démontre une performance QPS de 58 080 sur un seul cœur de CPU, surpassant la performance de NGINX qui est de 37 154 sur le même matériel.
-
La performance d'APISIX dépasse celle de NGINX de 56 %.
Configuration des tests et résultats des tests de stress
APISIX | NGINX | |
---|---|---|
QPS sur un seul cœur | 58080 | 37151 |
Test de stress | ![]() | ![]() |
Configurations principales | routes: - uri: /hello upstream: nodes: "127.0.0.1:1980": 1 #END | http { access_log off; server { listen 1990; location / { proxy_pass http://127.0.0.1:1980; } } } |
Matériel | CPU 1 CORE, 4GB RAM | CPU 1 CORE, 4GB RAM |
Taux d'utilisation du CPU | 100% | 100% |
Environnement de test :
-
Hôte : M1 Macbook Pro
-
Système d'exploitation : Debian
Si cela vous intéresse, il est intéressant d'essayer de reproduire le test vous-même, les résultats étant relativement faciles à reproduire.
Perspectives techniques
Selon le diagramme d'architecture logicielle officiellement publié par APISIX, l'attente raisonnable est que la performance d'APISIX devrait être inférieure à celle de NGINX. Cependant, "les occurrences inhabituelles indiquent souvent des problèmes sous-jacents". Explorons certains scénarios anormaux qui peuvent survenir lors des tests de stress de NGINX.
Allons droit au but : Les résultats de performance d'APISIX sont conformes aux attentes, et il en va de même pour NGINX. Cependant, il est important de reconnaître que le scénario de test pour APISIX se concentre sur la performance QPS sous des connexions longues, tandis que pour NGINX, il s'agit de connexions courtes. Par conséquent, la différence de performance QPS est raisonnable.
Les connexions longues sont généralement utilisées dans des scénarios nécessitant une communication continue, comme le chat en temps réel ou la transmission continue de données. Les connexions courtes, quant à elles, conviennent aux besoins de communication temporaires, comme l'accès à une page web ordinaire dans le mode requête-réponse HTTP.
Voici un exemple de configuration raisonnable pour NGINX. Avec cette configuration, vous constaterez une amélioration significative de la performance sur un seul cœur de NGINX, généralement doublée au minimum.
Pourquoi NGINX utilise-t-il des connexions courtes par défaut ?
Né en 2004, NGINX est un vétéran des projets open-source, approchant de ses deux décennies. Pour assurer une itération continue des utilisateurs et une expérience cohérente, l'évolution des fonctionnalités de NGINX tend à favoriser la compatibilité ascendante. Cela en fait l'un des rares services de proxy Web à utiliser par défaut le protocole HTTP 1.0. Ce paramètre par défaut a perduré pendant plus d'une décennie, et il est peu probable que NGINX le modifie à l'avenir.
À l'ère des microservices, des solutions cloud-native et de l'explosion de l'information AI, les ingénieurs recherchent des logiciels fiables et sans tracas, leur permettant de commencer à travailler de manière fluide. Ils apprécient également les configurations par défaut qui correspondent aux meilleures pratiques de production. Par conséquent, les logiciels open-source modernes tendent à se débarrasser des bagages historiques et à se concentrer sur la résolution efficace des problèmes, avec leurs avantages et inconvénients.