Apache APISIX vs NGINX

February 2, 2024

Technology

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

APISIXNGINX
Single-Core QPS5808037151
Stress-TestAPISIX_VS_NGINX_1_SSAPISIX_VS_NGINX_2_SS
Primäre Konfigurationenroutes:
  -
    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;
        }
    }
}
HardwareCPU 1 CORE, 4GB RAMCPU 1 CORE, 4GB RAM
CPU-Auslastung100%100%

Testumgebung:

  • Host: M1 Macbook Pro

  • Betriebssystem: Debian

APISIX_VS_NGINX_1

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.

APISIX_VS_NGINX_2

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.

APISIX_VS_NGINX_3

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.

APISIX_VS_NGINX_4

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.

Tags: