Apache APISIX vs NGINX

February 2, 2024

Technology

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

APISIXNGINX
QPS de Núcleo Único5808037151
Teste de EstresseAPISIX_VS_NGINX_1_SSAPISIX_VS_NGINX_2_SS
Configurações Principaisroutes:
  -
    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
Taxa de Uso da CPU100%100%

Ambiente de Teste:

  • Host: M1 Macbook Pro

  • Sistema Operacional: Debian

APISIX_VS_NGINX_1

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.

APISIX_VS_NGINX_2

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.

APISIX_VS_NGINX_3

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.

APISIX_VS_NGINX_4

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.

Tags: