A batalha dos servidores web. Parte 1 - HTTP divorciado da realidade:

Neste artigo, tentaremos a engenharia reversa, pode-se dizer. Nós olhamos com as mãos sujas sob o capô de cada servidor da Web, explorando-as como ninguém jamais teria explorado.

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


Metodologia


O sistema operacional para Nginx e Apache é o Ubuntu 18.04 LTS, para IIS Windows Server Core 2019. Todos os sistemas operacionais antes dos testes receberam as atualizações mais recentes em 4 de dezembro de 2019.

Os testes foram realizados exclusivamente sobre HTTP. Cada servidor da web tinha a mesma página, um modelo gratuito para o Jekyll da Codrops. Link Em cada um dos servidores web, a compactação gzip foi desativada.

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

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

Os servidores foram definidos para um limite de 10, 5 e 1 por cento do núcleo nos 8, 4 e um núcleo. Como banco de ensaio, havia um computador com 9900K a 5400 MHz, o que significa que o servidor, que recebeu um limite de 10%, recebe cerca de 540 MHz por núcleo.

O teste TTFB foi realizado na primeira inicialização do servidor e foi medido usando o DevTools. Após receber o resultado, o servidor foi desligado e revertido para o ponto de controle anterior para excluir a aparência de qualquer tipo de cache.

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

Para avaliar imediatamente o subsistema de disco, os resultados dos benchmarks ATTO e CrystalDIskMark para entender os gargalos.

Dados obtidos da máquina virtual:





Resultados:


TTFB:


O TTFB médio para o IIS é o mínimo, 0,5ms, contra 1,4ms para o Apache e 4ms para o Nginx.

Rendimento:

Primeiro, considere a qualidade de cada servidor em termos de número de núcleos.


O gráfico mostra o número de chamadas do testador para o servidor da web e a latência. O gráfico mostra que o NGINX cumpriu 98% de todos os hits, fornecendo o site por 20ms ou menos. O IIS e o Apache duram 5% de todas as chamadas trabalhadas por 76ms e 14ms, respectivamente.




O gráfico mostra o tempo médio de processamento de uma solicitação durante um teste de estresse.

Como você pode ver nos gráficos, o IIS expandiu o Apache e o Nginx, desacelerando significativamente sob alta carga.

O IIS claramente preferia quatro núcleos a oito, mostrando menos atrasos em quatro, mas também não endossava fortemente um núcleo.

O NGINX é perfeitamente dimensionado para todos os 8 núcleos e, para o Apache, parece que um script de núcleo único parece ser a melhor opção.

Escalabilidade:


Nginx:

Agora considere a escalabilidade na frequência e no número de núcleos.


Os testes com um limite de 1% nos núcleos 4 e 1 do Nginx não foram aprovados, deixando 2000 solicitações, desconectados do testador.

Apache:


Após processar 2500 solicitações, o Apache como Nginx se rendeu e desconectou. O Apache não passou no teste em núcleos 8, 4 e 1 com um limite de 1%, mas, além disso, o teste no limite de 5% em um núcleo não passou, o que é pior que o Nginx

IIS:


O IIS durante os testes reuniu uma fila gigante de solicitações, mas processou cada uma delas. Aparentemente, os tempos limite prontos para processar a solicitação não estão definidos nela.


O diagrama mostra o tempo necessário para concluir o teste. Configurações absurdamente absurdas de teste foram descartadas. O diagrama mostra como o IIS é exigente em hardware e como o NGINX é bonito.

Escalabilidade de disco:


Nginx:

Agora considere a escalabilidade na frequência e número de núcleos e velocidade do disco.


Desta vez, o Nginx falhou em 4 testes, em vez de dois.

Apache:


O Apache falhou no mesmo número de testes da última vez.

IIS:


O IIS mostra um gráfico quase idêntico, como se não houvesse restrições de disco. Em geral, os gráficos de todos os servidores não mudaram muito, o que significa que cada um deles armazenou em cache as estatísticas na RAM e as forneceu a partir daí. Aqui vemos o principal gargalo - o próprio servidor da web.

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

Oferecemos uma tarifa atualizada do UltraLite Windows VDS por 99 rublos com o Windows Server 2019 Core instalado.

Source: https://habr.com/ru/post/pt478854/


All Articles