Como executar o benchmark de desempenho do servidor Web?

Você conhece o tempo médio de resposta do seu site? Você sabe quantos usuários simultâneos seu site pode manipular?


O teste de carga é essencial para os aplicativos da web conhecerem o site capacidade. Se você quiser escolher o servidor da Web, uma das primeiras coisas que deseja fazer é realizar o teste de carga e ver qual funciona melhor para você..

O benchmarking pode ajudá-lo a decidir;

  • Qual servidor Web funciona melhor
  • Número de servidores que você precisa para atender x número de solicitações
  • Qual configuração oferece os melhores resultados

Existem várias ferramentas online para realizar um teste de estresse; No entanto, se você estiver procurando por uma solução interna ou quiser comparar apenas o desempenho do servidor da Web, poderá usar ApacheBench e, alternativamente, algumas das ferramentas listadas abaixo.

Eu usei o Apache & Servidor web Nginx hospedado em DigitalOcean para testá-lo.

ApacheBench

ApacheBench (ab) é um programa de linha de comando de código aberto que funciona com qualquer servidor web. Neste post, explicarei como instalar este pequeno programa e executar o teste de carga para comparar os resultados.

Apache

Vamos instalar o ApacheBench usando um comando yum.

yum instalar o httpd-tools

Se você já possui o httpd-tools, poderá ignorar isso.

Agora, vamos ver o desempenho de 5000 solicitações com uma simultaneidade de 500.

[[protegido por email] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
Este é o ApacheBench, versão 2.3 <$ Revisão: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licenciado para a Apache Software Foundation, http://www.apache.org/
Comparação de host local (seja paciente)
500 solicitações concluídas
1000 solicitações concluídas
1500 pedidos concluídos
2000 solicitações concluídas
2500 pedidos concluídos
3000 solicitações concluídas
3500 solicitações concluídas
4000 pedidos concluídos
4500 solicitações concluídas
5000 solicitações concluídas
5000 pedidos finalizados
Software de servidor: Apache / 2.2.15
Nome do host do servidor: localhost
Porta do servidor: 80
Caminho do documento: /
Comprimento do documento: 4961 bytes
Nível de Concorrência: 500
Tempo necessário para os testes: 13,389 segundos
Solicitações completas: 5000
Pedidos com falha: 0
Escreva erros: 0
Respostas não-2xx: 5058
Total transferido: 26094222 bytes
HTML transferido: 25092738 bytes
Pedidos por segundo: 373,45 [# / s] (média)
Tempo por solicitação: 1338.866 [ms] (média)
Tempo por solicitação: 2.678 [ms] (média, em todas as solicitações simultâneas)
Taxa de transferência: 1903,30 [Kbytes / s] recebidos
Tempos de conexão (ms)
min média [+/- sd] mediana máx
Conectar: ​​0 42 20,8 41 1000
Processamento: 0 428 2116,5 65 13310
Em espera: 0 416 2117,7 55 13303
Total: 51 470 2121,0 102 13378
Porcentagem de solicitações atendidas dentro de um determinado período (ms)
50% 102
66% 117
75% 130
80% 132
90% 149
95% 255
98% 13377
99% 13378
100% 13378 (solicitação mais longa)
[[protegido por email] ~] #

Então, como você pode ver, o Apache lidou com 373 pedidos por segundo, e demorou 13.389 segundos para atender ao total de solicitações.

Agora você sabe que a configuração padrão pode atender a muitas solicitações; portanto, quando você faz alterações na configuração, pode fazer o teste novamente para comparar os resultados e escolher a opção melhor 1.

Nginx

Vamos testar o que fizemos no Apache, para que você possa comparar qual deles tem melhor desempenho.

[[protegido por email] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
Este é o ApacheBench, versão 2.3 <$ Revisão: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licenciado para a Apache Software Foundation, http://www.apache.org/
Comparação de host local (seja paciente)
500 solicitações concluídas
1000 solicitações concluídas
1500 pedidos concluídos
2000 solicitações concluídas
2500 pedidos concluídos
3000 solicitações concluídas
3500 solicitações concluídas
4000 pedidos concluídos
4500 solicitações concluídas
5000 solicitações concluídas
5000 pedidos finalizados
Software de servidor: nginx / 1.10.1
Nome do host do servidor: localhost
Porta do servidor: 80
Caminho do documento: /
Comprimento do documento: 3698 bytes
Nível de Concorrência: 500
Tempo necessário para os testes: 0,758 segundos
Solicitações completas: 5000
Pedidos com falha: 0
Escreva erros: 0
Total transferido: 19660000 bytes
HTML transferido: 18490000 bytes
Pedidos por segundo: 6593.48 [# / s] (média)
Tempo por solicitação: 75,832 [ms] (média)
Tempo por solicitação: 0,152 [ms] (média, em todas as solicitações simultâneas)
Taxa de transferência: 25317,93 [Kbytes / s] recebidos
Tempos de conexão (ms)
min média [+/- sd] mediana máx
Conectar: ​​0 6 11.0 2 53
Processamento: 5 19 8,2 17 53
Em espera: 0 18 8,2 16 47
Total: 10 25 17,4 18 79
Porcentagem de solicitações atendidas dentro de um determinado período (ms)
50% 18
66% 21
75% 21
80% 22
90% 69
95% 73
98% 75
99% 76
00% 79 (solicitação mais longa)
[[protegido por email] ~] #

UAU! Você viu aquilo? Nginx manipulado 6593 solicitações por segundo! Um vencedor.

Então, ao comparar apenas com dois servidores da web, você terá uma idéia de qual escolher para o seu aplicativo da web.

O teste acima está no CentOS 6.8, 64 bits. Você pode tentar várias combinações de SO & Versão do servidor Web para obter os melhores resultados.

CERCO

CERCO é um utilitário de teste de carga HTTP suportado no UNIX. Você pode colocar vários URLs em um arquivo de texto para carregar o teste. Você pode instalar o cerco usando o yum.

# yum install siege

Vamos executar o teste com 500 solicitações simultâneas por 5 segundos.

[[protegido por email] ~] # siege -q -t 5S -c 500 http: // localhost /
Levantando o cerco do servidor … feito.
Transações: 4323 hits
Disponibilidade: 100,00%
Tempo decorrido: 4.60 segundos
Dados transferidos: 15,25 MB
Tempo de resposta: 0,04 segundos
Taxa de transação: 939,78 trans / s
Rendimento: 3,31 MB / s
Simultaneidade: 37,97
Transações bem sucedidas: 4323
Transações com falha: 0
Transação mais longa: 1,04
Transação mais curta: 0,00
[[protegido por email] ~] #

Para quebrar os parâmetros.

-q – para executá-lo silenciosamente (não mostrando detalhes da solicitação)

-t – corra por 5 segundos

-c – 500 solicitações simultâneas

Portanto, como você pode ver, a disponibilidade é de 100% e o tempo de resposta é de 0,04 segundos. Você pode ajustar o parâmetro de teste de carga com base no seu objetivo.

Gobench

Gobench está escrito na linguagem Go e no utilitário de teste de carga simples para comparar o desempenho do servidor da web. Ele suporta mais de 20.000 usuários simultâneos, o que o ApacheBench não oferece.

Apache JMeter

JMeter é uma das ferramentas de código aberto mais populares para medir o desempenho de aplicativos da web. JMeter é um aplicativo baseado em java e não apenas um servidor web, mas você pode usá-lo em PHP, Java. ASP.net, SOAP, REST, etc.

O JMeter obteve uma interface gráfica amigável decente e a versão mais recente 3.0 requer Java 7 ou superior para iniciar o aplicativo. Você deve tentar o JMeter se seu objetivo é otimizar o desempenho do aplicativo da web.

wrk

wrk é outra ferramenta moderna de medição de desempenho para carregar o servidor da Web e fornecer latência, solicitação por segundo, transferência por segundo, etc. detalhes.

Com wrk, você pode especificar para executar um teste de carga com vários encadeamentos.

Vamos dar um exemplo de como executar um teste por 5 minutos com 500 usuários simultâneos com 8 threads.

wrk –t8 –c500 -d300s http: // localhost

HTTPLoad

O Httpload pode ler os vários URLs do arquivo ou você pode especificá-lo no argumento de comando. A versão mais recente suporta SSL / TLS, o que significa que você pode consultar o URL da página da web habilitado para HTTPS (SSL).

Ao testar a URL habilitada para SSL, você tem a opção de especificar a cifra, e o comando simples de teste seria semelhante a este.

httpload -cipher AES256-SHA -parallel 200 -seconds 120 URL_LIST.txt

Para entender melhor, o acima executará o teste contra 200 usuários simultâneos por 2 minutos.

Carregador de caracóis

carregador de ondas é escrito em C para simular a carga do aplicativo e suporta SSL / TLS. Juntamente com o teste de página da web, você também pode usar esta ferramenta de código aberto para realizar carregamento em servidores FTP.

Você pode criar um plano de teste com uma mistura de HTTP, HTTPS, FTP e FTPS em uma configuração de lote único.

httperf

o httperf é uma ferramenta de alto desempenho que se concentra no benchmark de nível micro e macro. Ele suporta protocolos HTTP / 1.1 e SSL.

Se você esperava um número de usuários simultâneos e estava procurando testar se uma solicitação pode ser atendida pelo servidor da Web, você pode usar o seguinte comando.

Ativação do servidor de rede local do servidor

O comando acima testará com 100 solicitações por segundo para 1000 solicitações HTTP.

Tsung

Tsung é uma ferramenta de teste de estresse distribuído multiprotocolo para enfatizar o servidor HTTP, SOAP, PostgreSQL, LDAP, XAMP, MySQL. Ele suporta HTTP / 1.0, HTTP / 1.1 e os cookies são manipulados automaticamente.

A geração de um relatório é viável com a Tsung.

Conclusão

Espero acima ferramentas de benchmarking dê uma idéia sobre o desempenho do servidor da Web e ajude a decidir o que funciona melhor para o seu projeto.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map