A ferramenta de referência do apache é muito básica e, embora ofereça uma sólida idéia de desempenho, é uma má idéia depender apenas dela se você planeja expor seu site a um sério estresse na produção.
Dito isto, aqui estão os parâmetros mais comuns e mais simples:
-c
: ("Simultaneidade"). Indica quantos clientes (pessoas / usuários) acessarão o site ao mesmo tempo. Durante a ab
execução, haverá -c
clientes acessando o site. Isso é o que realmente decide a quantidade de estresse que seu site sofrerá durante o benchmark.
-n
: Indica quantas solicitações serão feitas. Isso apenas decide o comprimento do benchmark. Um -n
valor alto com um -c
valor que o servidor possa suportar é uma boa idéia para garantir que as coisas não quebrem sob estresse contínuo: não é o mesmo dar suporte ao estresse por 5 segundos e por 5 horas.
-k
: Isso faz os navegadores de funcionalidade "KeepAlive" por natureza. Você não precisa passar um valor para -k
ele "booleano" (ou seja: indica que deseja que seu teste use o cabeçalho Keep Alive do HTTP e mantenha a conexão). Como os navegadores fazem isso e é provável que você queira simular o estresse e o fluxo que o site terá dos navegadores, é recomendável que você faça uma referência com isso.
O argumento final é simplesmente o host. Por padrão, ele atingirá o protocolo http: // se você não o especificar.
ab -k -c 350 -n 20000 example.com/
Ao emitir o comando acima, você acessará http://example.com/ com 350 conexões simultâneas até que 20 mil solicitações sejam atendidas. Isso será feito usando o cabeçalho keep alive.
Depois que o processo terminar os 20 mil pedidos, você receberá um feedback sobre as estatísticas. Isso mostrará o desempenho do site sob o estresse que você coloca ao usar os parâmetros acima.
Para descobrir quantas pessoas o site pode lidar ao mesmo tempo, verifique se os tempos de resposta (média, mínimo e máximo de resposta, solicitações com falha etc.) são números que seu site pode aceitar (sites diferentes podem desejar velocidades diferentes). Você pode executar a ferramenta com valores -c diferentes até chegar ao local em que diz "Se eu aumentá-la, ela começa a receber solicitações com falha e é interrompida".
Dependendo do seu site, você espera um número médio de solicitações por minuto. Isso varia muito, você não poderá simular isso com ab. No entanto, pense da seguinte maneira: se o usuário médio atender 5 solicitações por minuto e o tempo médio de resposta que você achar válido for de 2 segundos, isso significa que 10 segundos em um minuto 1 usuário estará solicitando, significando apenas 1/6 do tempo em que chegará ao site. Isso também significa que se você tiver 6 usuários acessando o site com ab simultaneamente, provavelmente terá 36 usuários em simulação, mesmo que seu nível de simultaneidade (-c) seja apenas 6.
Isso depende do comportamento que você espera de seus usuários que usam o site, mas você pode obtê-lo em "Espero que meu usuário atinja solicitações X por minuto e considero um tempo médio de resposta válido em 2 segundos". Em seguida, modifique seu nível -c até atingir 2 segundos do tempo médio de resposta (mas verifique se o tempo máximo de resposta e o stddev ainda são válidos) e veja o tamanho que você pode aumentar para -c.
Espero ter explicado isso claramente :) Boa sorte
-l
opção se a página tiver conteúdo dinâmico, para que você não receba muitas solicitações com falha devido ao comprimento do conteúdo ser diferente entre as solicitações.O teste mais simples que você pode fazer é executar 1000 solicitações, 10 por vez (que simula aproximadamente 10 usuários simultâneos, obtendo 100 páginas cada - ao longo da duração do teste).
-n 1000
é o número de solicitações a serem feitas.-c 10
instrui a AB a fazer 10 solicitações por vez, em vez de 1 solicitação por vez, para simular melhor os visitantes simultâneos (vs. visitantes sequenciais).-k
envia oKeepAlive
cabeçalho, que solicita ao servidor da Web que não desligue a conexão após a conclusão de cada solicitação, mas continue reutilizando-a.Também estou enviando o cabeçalho extra
Accept-Encoding: gzip, deflate
porque o mod_deflate quase sempre é usado para compactar a saída de texto / html de 25% a 75% - cujos efeitos não devem ser descartados devido ao impacto no desempenho geral do servidor da web (por exemplo, pode transferir 2x os dados na mesma quantidade de tempo, etc).Resultados:
Para uma interpretação mais simples, ignore tudo, menos esta linha:
Multiplique isso por 60 e você terá suas solicitações por minuto.
Para obter resultados do mundo real, convém testar o Wordpress em vez de um arquivo HTML ou index.php estático, porque você precisa saber como tudo funciona juntos: incluindo código PHP complexo e várias consultas MySQL ...
Por exemplo, aqui estão os resultados dos testes de uma nova instalação do Wordpress no mesmo sistema e ambiente WAMP (estou usando o WampDeveloper, mas também existem Xampp, WampServer e outros) ...
Isso é 37x mais lento agora!
Após o teste de carga, há várias ações que você pode fazer para melhorar o desempenho geral (solicitações por segundo) e também tornar o servidor da Web mais estável sob uma carga maior (por exemplo, aumentando o
-n
e as-c
tendências a travar o Apache), que você pode ler aqui:Teste de carga do Apache com AB (Apache Bench)
fonte
Etapas para configurar o Apache Bench (AB) no Windows (IMO - recomendado).
Etapa 1 - Instale o Xampp.
Etapa 2 - Abra o CMD.
Etapa 3 - Vá para o destino do banco apache (
cd C:\xampp\apache\bin
) no CMDEtapa 4 - Cole o comando (
ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/
)Etapa 5 - Aguarde. Seu feito
fonte
Eu também estava curioso para saber se posso medir a velocidade do meu script com abs apache ou um script de medida de construção / destruição de php ou uma extensão php.
os dois últimos falharam para mim: são aproximados. após o qual pensei em tentar "ab" e "abs".
o comando "ab -k -c 350 -n 20000 example.com/" é lindo porque é tudo mais fácil!
mas alguém pensou em "localhost" em qualquer servidor apache, por exemplo www.apachefriends.org?
você deve criar uma pasta como "bench" na raiz, onde você tem 2 arquivos: teste "bench.php" e faça referência a "void.php".
e então: compare!
bench.php
void.php
na área de trabalho, você deve usar um arquivo .bat (no Windows) como este:
bench.bat
Agora, se você prestar atenção de perto ...
o script nulo não produz resultados zero !!! Portanto, a conclusão é: a partir do segundo resultado, o primeiro resultado deve ser diminuído !!!
aqui eu tenho:
90-17 = 73 o resultado que eu espero!
fonte
Carregar o teste de sua API usando apenas ab não é suficiente. No entanto, acho que é uma ótima ferramenta para fornecer uma idéia básica de como seu site tem desempenho.
Se você deseja usar o comando ab para testar vários pontos de extremidade da API, com dados diferentes, todos ao mesmo tempo em segundo plano, é necessário usar o comando "nohup". Ele executa qualquer comando, mesmo quando você fecha o terminal.
Eu escrevi um script simples que automatiza todo o processo, fique à vontade para usá-lo: http://blog.ikvasnica.com/entry/load-test-multiple-api-endpoints-concurrently-use-this-simple-shell-script
fonte