Apache APISIX vs NGINX
February 2, 2024
Laut den Statistiken von W3Techs bis Juni 2022 ist NGINX der am weitesten verbreitete Webserver weltweit und hält einen beträchtlichen Marktanteil von 33,6 %. Seine weit verbreitete Nutzung und bemerkenswerte Leistung haben ein hohes Maß an Vertrauen bei den Nutzern geschaffen, was ihn zu einem häufigen Vergleichsmaßstab macht.
Leistungstestergebnisse
In praktischen Tests haben wir die Leistung von APISIX und NGINX in einem einfachen Szenario verglichen, mit den folgenden Ergebnissen:
-
APISIX zeigt eine QPS-Leistung von 58.080 auf einem einzelnen CPU-Kern und übertrifft damit die Leistung von NGINX mit 37.154 auf derselben Hardware.
-
Die Leistung von APISIX übertrifft die von NGINX um beeindruckende 56 %.
Testkonfiguration & Stress-Testergebnisse
APISIX | NGINX | |
---|---|---|
Single-Core QPS | 58080 | 37151 |
Stress-Test | ![]() | ![]() |
Primäre Konfigurationen | 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; } } } |
Hardware | CPU 1 CORE, 4GB RAM | CPU 1 CORE, 4GB RAM |
CPU-Auslastung | 100% | 100% |
Testumgebung:
-
Host: M1 Macbook Pro
-
Betriebssystem: Debian
Wenn Sie daran interessiert sind, lohnt es sich, den Test selbst zu wiederholen, da die Ergebnisse relativ einfach zu reproduzieren sind.
Technische Einblicke
Laut dem offiziell veröffentlichten Softwarearchitekturdiagramm von APISIX ist die vernünftige Erwartung, dass die Leistung von APISIX niedriger sein sollte als die von NGINX. Allerdings deuten „ungewöhnliche Vorkommnisse oft auf zugrunde liegende Probleme hin“. Lassen Sie uns einige anormale Szenarien untersuchen, die während des NGINX-Stress-Tests auftreten können.
Kommen wir direkt zum Punkt: Die Leistungsergebnisse von APISIX sind wie erwartet, und dasselbe gilt für NGINX. Es ist jedoch wichtig zu erkennen, dass das Testszenario für APISIX sich auf die QPS-Leistung unter langfristigen Verbindungen konzentriert, während es für NGINX kurzfristige Verbindungen sind. Daher ist der Unterschied in der QPS-Leistung vernünftig.
Langfristige Verbindungen werden typischerweise in Szenarien eingesetzt, die eine kontinuierliche Kommunikation erfordern, wie z. B. Echtzeit-Chats oder kontinuierliche Datenübertragungen. Kurzfristige Verbindungen hingegen eignen sich für temporäre Kommunikationsbedürfnisse, wie den Zugriff auf gewöhnliche Webseiten im HTTP-Anfrage-Antwort-Modus.
Nachfolgend finden Sie ein vernünftiges Konfigurationsbeispiel für NGINX. Mit dieser Konfiguration werden Sie eine deutliche Verbesserung der Single-Core-Leistung von NGINX feststellen, die sich typischerweise mindestens verdoppelt.
Warum verwendet NGINX standardmäßig kurzfristige Verbindungen?
NGINX, geboren im Jahr 2004, ist ein Veteran unter den Open-Source-Projekten und nähert sich seinem zweiten Jahrzehnt. Um eine kontinuierliche Benutzeriteration und ein konsistentes Erlebnis zu gewährleisten, tendiert die Funktionsentwicklung von NGINX dazu, Vorwärtskompatibilität zu bevorzugen. Dies macht es zu einem der wenigen Web-Proxy-Dienste, die standardmäßig das HTTP 1.0-Protokoll verwenden. Diese Standardeinstellung hat sich über ein Jahrzehnt gehalten, und es wird spekuliert, dass NGINX sie in Zukunft wahrscheinlich nicht ändern wird.
Im Zeitalter von Microservices, Cloud-nativen Lösungen und der Explosion von KI-Informationen suchen Ingenieure nach Software, die zuverlässig und problemlos ist und es ihnen ermöglicht, nahtlos mit der Arbeit zu beginnen. Sie schätzen auch Standardkonfigurationen, die den Best Practices in der Produktion entsprechen. Folglich neigt moderne Open-Source-Software dazu, historischen Ballast abzuwerfen und sich darauf zu konzentrieren, Probleme effizient zu lösen, mit sowohl Vor- als auch Nachteilen.