Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:

Neste artigo, tentaremos um pouco de engenharia reversa, por assim dizer. Vamos espiar com nossas mãos sujas sob o capô de cada um dos servidores web, explorando-os da maneira que ninguém jamais exploraria.

Este teste é uma medição de um cavalo esférico no vácuo, nada mais do que dados que foram obtidos, e agora não sabemos o que fazer com eles.

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:

Metodologia

O sistema operacional utilizado para Nginx e Apache é o Ubuntu 18.04 LTS, e para IIS é o Windows Server Core 2019. Todos os sistemas operacionais receberam as últimas atualizações até 04.12.2019.

Os testes foram conduzidos exclusivamente via HTTP. Em cada um dos servidores web, estava rodando a mesma página, um template gratuito para Jekyll da Codrops. Link. A compactação gzip foi desativada em todos os servidores web.

O teste de largura de banda foi realizado com o Httpd-tools utilizando os seguintes argumentos:

ab -n 50000 -c 500 http://192.168.76.204:80/

Foi aplicado um limite de 10%, 5% e 1% do núcleo para 8, 4 e um núcleo. A configuração do teste foi um computador com 9900K@5400MHz, o que significa que o servidor que recebeu a limitação de 10% recebe cerca de 540MHz por núcleo.

O teste TTFB foi conduzido na primeira carga do servidor e foi medido usando o DevTools. Após obter o resultado, o servidor foi desligado e revertido para o ponto de controle anterior para excluir qualquer tipo de cache.

O testador e o servidor web estavam no mesmo host e no mesmo switch virtual.

Para avaliar imediatamente o subsistema de disco, os resultados do benchmark ATTO e CrystalDiskMark foram coletados para ter uma noção dos gargalos.

Os dados foram coletados da máquina virtual:Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:

Resultados:

TTFB:

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
O TTFB médio do IIS é o menor de todos, 0,5ms, contra 1,4ms do Apache e 4ms do Nginx.

Taxa de transferência:

Primeiro, vamos observar quão bem cada um dos servidores escala em relação ao número de núcleos.

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
O gráfico mostra o número de acessos do testador ao servidor web e a latência. Nele, pode-se ver que o NGINX lidou com 98% de todos os acessos, entregando o site em 20ms ou menos. O IIS, assim como o Apache, levou os últimos 5% de todos os acessos em 76ms e 14ms, respectivamente.

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
O gráfico exibe o tempo médio de processamento de uma única solicitação durante o teste de estresse.

Como pode ser observado nos gráficos, o IIS ficou atrás tanto do Apache quanto do Nginx, desacelerando bastante sob carga alta. 

O IIS claramente preferiu 4 núcleos em vez de oito, mostrando menores latências em quatro, mas também não apoiou muito um único núcleo.

O NGINX escala perfeitamente em todos os 8 núcleos, enquanto para o Apache, aparentemente, um cenário de núcleo único parece ser a melhor escolha.

Escalabilidade:

Nginx:

Agora, vamos considerar a escalabilidade em relação à frequência e ao número de núcleos. 

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Os testes com um limite de 1% em 4 e 1 núcleo não foram bem-sucedidos para o Nginx; ao ultrapassar 2000 requisições, ele cortou a conexão com o testador.

Apache:

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Assim como o Nginx, o Apache também se rendeu e cortou a conexão depois de processar 2500 requisições. O Apache não passou no teste em 8, 4 e 1 núcleo com limite de 1%, e além disso, não passou no teste com o limite de 5% em um único núcleo, o que é pior do que o Nginx.

IIS:

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Durante os testes, o IIS acumulou uma enorme fila de requisições, mas processou cada uma delas. Aparentemente, não há timeouts de processamento de requisições configurados por padrão.

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
O gráfico apresenta o tempo em que o teste foi concluído. Configurações de teste totalmente absurdas foram descartadas. O gráfico revela o quanto o IIS é exigente em termos de hardware e o quão excelente é o NGINX.

Escalabilidade a partir do disco:

Nginx:

Agora, vamos analisar a escalabilidade com relação à frequência, número de núcleos e velocidade do disco. 

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
Desta vez, o Nginx não passou em 4 testes, em vez de 2.

Apache:

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
O Apache falhou no mesmo número de testes que na última vez.

IIS:

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:
O IIS apresenta um gráfico quase idêntico, como se não houvesse limitações no disco. De modo geral, os gráficos de todos os servidores não mudaram significativamente, o que significa que cada um deles armazenou a estática na memória RAM e serviu a partir dela. Aqui vemos o principal gargalo – o próprio servidor web.

É cedo para tirar conclusões com base neste teste; ainda não testamos HTTPS, compressão e HTTP/2 com um certificado ativo do Let’s Encrypt. Falaremos sobre isso no próximo artigo.

Batalha dos servidores WEB. Parte 1 – a realidade distorcida do HTTP:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster