Apache APISIX vs NGINX
February 2, 2024
De acordo com as estatísticas da W3Techs até junho de 2022, o NGINX é o servidor web mais amplamente utilizado globalmente, detendo uma participação de mercado substancial de 33,6%. Sua adoção generalizada e desempenho notável estabeleceram um alto nível de confiança entre os usuários, tornando-o um benchmark frequente para comparação.
Resultados dos Testes de Desempenho
Em testes práticos, comparamos o desempenho do APISIX e do NGINX em um cenário simples, com os seguintes resultados:
-
O APISIX demonstra um desempenho de QPS de 58.080 em um único núcleo de CPU, superando o desempenho do NGINX de 37.154 no mesmo hardware.
-
O desempenho do APISIX supera o do NGINX em impressionantes 56%.
Configuração do Teste e Resultados do Teste de Estresse
APISIX | NGINX | |
---|---|---|
QPS de Núcleo Único | 58080 | 37151 |
Teste de Estresse | ![]() | ![]() |
Configurações Principais | 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 |
Taxa de Uso da CPU | 100% | 100% |
Ambiente de Teste:
-
Host: M1 Macbook Pro
-
Sistema Operacional: Debian
Se você estiver interessado nisso, vale a pena tentar replicar o teste por conta própria, cujos resultados são relativamente fáceis de reproduzir.
Insights Técnicos
De acordo com o diagrama de arquitetura de software oficialmente lançado pelo APISIX, a expectativa razoável é que o desempenho do APISIX seja inferior ao do NGINX. No entanto, "ocorrências incomuns geralmente indicam problemas subjacentes". Vamos explorar alguns cenários anormais que podem surgir durante o teste de estresse do NGINX.
Vamos direto ao ponto: Os resultados de desempenho do APISIX são conforme o esperado, e o mesmo vale para o NGINX. No entanto, é importante reconhecer que o cenário de teste para o APISIX foca no desempenho de QPS sob conexões de longa duração, enquanto para o NGINX, são conexões de curta duração. Portanto, a diferença no desempenho de QPS é razoável.
Conexões de longa duração são geralmente empregadas em cenários que exigem comunicação contínua, como bate-papo em tempo real ou transmissão contínua de dados. Conexões de curta duração, por outro lado, são adequadas para necessidades de comunicação temporárias, como o acesso comum a páginas web no modo de solicitação-resposta HTTP.
Abaixo está um exemplo de configuração razoável para o NGINX. Com essa configuração, você encontrará uma melhoria significativa no desempenho de núcleo único do NGINX, tipicamente dobrando no mínimo.
Por que o NGINX Usa Conexões de Curta Duração por Padrão?
Nascido em 2004, o NGINX é um veterano em projetos de código aberto, aproximando-se de duas décadas de existência. Para garantir a iteração contínua dos usuários e uma experiência consistente, a evolução de recursos do NGINX tende a favorecer a compatibilidade direta. Isso o torna um dos poucos serviços de proxy web que, por padrão, utilizam o protocolo HTTP 1.0. Essa configuração padrão persiste há mais de uma década, e especula-se que o NGINX provavelmente não a alterará no futuro.
Na era dos microsserviços, soluções nativas da nuvem e a explosão de informações de IA, os engenheiros buscam software confiável e sem complicações, permitindo que comecem a trabalhar sem problemas. Eles também apreciam configurações padrão que estejam alinhadas com as melhores práticas de produção. Consequentemente, o software de código aberto moderno tende a se livrar de bagagens históricas e focar na resolução eficiente de problemas, com vantagens e desvantagens.