AB é uma abreviação de ApacheBench.
O comando ab cria múltiplas threads de acesso concorrentes para simular múltiplos visitantes acessando um endereço URL ao mesmo tempo. Seus alvos de teste são baseados em URL, então pode ser usado para testar tanto o estresse de carga do apache quanto outros estresses de servidores web, como nginx, lighthttp, tomcat, IIS, etc.
O comando ab tem requisitos baixos para o computador que está emitindo a carga e não consome muita CPU ou memória. No entanto, isso causará uma carga enorme no servidor alvo, e seu princípio é semelhante aos ataques CC. Você também precisa prestar atenção nos testes e no uso por conta própria, caso contrário terá carga demais de uma vez só. Isso pode fazer com que o servidor alvo fique sem recursos e, em casos graves, até mesmo causar um travamento.
1. Introdução ao Banco Apache
O ApacheBench é uma ferramenta de teste de estresse web que vem com servidores Apache, abreviado como ab. AB também é uma ferramenta de linha de comando com baixos requisitos nativos para iniciar cargas úteis, e muitas threads de acesso concorrente podem ser criadas de acordo com o comando AB, simulando múltiplos visitantes acessando um determinado endereço URL ao mesmo tempo, para que possa ser usada para testar a pressão de carga do servidor alvo. Em geral, a ferramenta AB é pequena e simples, rápida de aprender e pode fornecer os indicadores básicos de desempenho necessários, mas não há resultados gráficos e não pode ser monitorada.
2. Instalação do Banco Apache
Primeiro, você precisa instalar o servidor Apache, baixar o endereço:O login do hiperlink está visível.,
Meu computador é um sistema Win10 de 64 bits, então baixei o "httpd-2.4.33-win64-VC15.zip"., link:O login do hiperlink está visível.
Recomenda-se baixar a versão mais recente, pois versões antigas do ab não suportam o parâmetro -r.
3. Uso no banco Apache
Entenda os parâmetros
Descrição do parâmetro: Format: ab [opções] [http://]nome do host[:p ort]/path
-n solicitações Número de solicitações a serem realizadas //O número total de solicitações iniciadas neste teste -c Concorrência Número de múltiplas solicitações a serem feitas // Número de solicitações (ou concorrência) geradas simultaneamente -t limite de tempo Segundos para o máximo. Aguarde por Respostas //O número máximo de segundos em que um teste é realizado por padrão. -r Não sair no socket recebe erros de recepção. Abra uma exceção para continuar a tarefa de teste -p postfile Arquivo contendo dados para POST // Um arquivo contendo dados que precisam ser POST, em um formato de arquivo como "p1=1&p2=2". O método de uso é -p 111.txt
-Cabeçalho tipo conteúdo T tipo conteúdo para POSTing O cabeçalho do tipo Conteúdo é usado para os dados POST, como -T "application/x-www-form-urlencoded". (co-p) -v verbosidade Quanta informação de solução de problemas imprimir Defina o nível de detalhe para exibir informações – um valor de 4 ou maior mostrará informações do cabeçalho, um valor de 3 ou maior mostrará um código de resposta (404, 200, etc.), e um valor de 2 ou superior mostrará avisos e outras informações. -V exibe o número da versão e sai. -Atributo C Adicionar cookie, por exemplo. -C "c1=1234,c2=2,c3=3" (repetível) -C cookie-name=value Adicionar um cookie à linha request:. A forma típica é um par de parâmetros nome=valor. Esse parâmetro pode ser repetido, dividido por vírgula. Dica: Você pode usar o princípio de implementação da sessão para passar o parâmetro JSESSIONID e alcançar a função de manter a sessão, como -C "c1=1234, c2=2, c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8". -w Imprimir resultados em tabelas HTML // Resultados de saída em formato de tabela HTML. Por padrão, é uma tabela com duas colunas de largura sobre um fundo branco. -Eu uso CABEÇA em vez de GET -x atributos String para inserir como atributos de tabela -y atributos String para inserir como atributos tr -z atributos String to insert como atributos td ou th -Atributo H Adicionar cabeçalho arbitrário, por exemplo. 'Aceitar-Codificação: gzip' Inserido após todas as linhas normais do cabeçalho. (repetível) -Um atributo Adicionar Autenticação Básica WWW, os atributos são um nome de usuário e senha separados por dois dois. -P atributo Adicionar Autenticação Básica de Proxy, os atributos são um nome de usuário e senha separados por dois pontos. -X proxi:port Proxyserver e número de porta a usar -V Imprimir número da versão e saída -k Use o recurso HTTP KeepAlive -d Não mostre percentis servidos na mesa. -S Não mostre estimadores de confiança nem avisos. -g nome do arquivo Saída dos dados coletados para o arquivo em formato gnuplot. -e Arquivo Saída do arquivo CSV com porcentagens servidas -h Exibir informações de uso (esta mensagem) Existem muitos parâmetros, geralmente podemos usar -c e -n parâmetros. Por exemplo:
Descompacte o "httpd-2.4.33-win64-VC15.zip", vá para \Apache24\bin e inicie com a linha de comando do cmd, como mostrado na figura abaixo:
SSL não compilado em; sem suporte a HTTPS: SSL não é compilado em; Não há suporte a https, o que significa que o site não suporta https.
Resultados do teste:
C:\Users\itsvse_pc\Downloads\httpd-2.4.33-win64-VC15\Apache24\bin>ab -c 10 -n 1000 https://www.itsvse.com SSL não compilado em; Sem suporte a HTTPS
C:\Users\itsvse_pc\Downloads\httpd-2.4.33-win64-VC15\Apache24\bin>ab -c 10 -n 1000 http://www.itsvse.com/ Este é o ApacheBench, Versão 2.3 <$Revision: 1826891 $> Direitos autorais 1996 Adam Twiss, Zeus Technology Ltd,O login do hiperlink está visível. Licenciado para a Apache Software Foundation,O login do hiperlink está visível.
Benchmarkingwww.itsvse.com(tenha paciência) Concluímos 100 pedidos Concluímos 200 pedidos Concluímos 300 pedidos Concluímos 400 pedidos Concluímos 500 pedidos Concluímos 600 pedidos Concluímos 700 solicitações Concluímos 800 pedidos Concluímos 900 pedidos Concluímos 1000 pedidos Concluí 1000 pedidos
Software de Servidor: Nome do Servidor Host: www.itsvse.com Porta do servidor: 80
Caminho do Documento: / Comprimento do documento: 178 bytes
Nível de Concorrência: 10 Tempo necessário para os testes: 44,916 segundos Pedidos completos: 1000 Pedidos falhados: 0 Respostas que não são do 2xx: 1000 Total transferido: 349.000 bytes HTML transferido: 178.000 bytes Pedidos por segundo: 22,26 [#/seg] (média) Tempo por pedido: 449.164 [ms] (média) Tempo por solicitação: 44,916 [ms] (média, em todas as solicitações simultâneas) Taxa de transferência: 7,59 [Kbytes/s] recebidos
Tempos de Conexão (ms) Média mínima[+/-Sd] Máxima mediana
Connect: 32 45 60.1 37 1439
Processing: 35 401 185.6 356 1795
Waiting: 34 245 199.6 228 1791
Total: 69 446 195.4 397 1830
Porcentagem das solicitações atendidas dentro de determinado prazo (ms) 50% 397 66% 415 75% 439 80% 461 90% 535 95% 623 98% 1563 99% 1784 100% 1830 (pedido mais longo) Análise de parâmetros:
Caminho do Documento: Página de Teste Comprimento do Documento: O tamanho da página Nível de Concorrência: Número de concorrências testadas simultaneamente Tempo necessário para as provas: A duração total do teste Pedidos completos: Número de solicitações concluídas Solicitações falhadas: O número de solicitações falhadas Erros de escrita: 0 Total transferido: A quantidade de rede transferida ao longo do processo HTML transferido: A quantidade de conteúdo HTML transferida ao longo do processo Solicitações por segundo: Uma das métricas mais importantes, equivalente a transações por segundo em LR, e média entre parênteses, indica que isso é uma média Tempo por requisição: As duas métricas mais importantes, equivalentes ao tempo médio de resposta de transação em LR, a média entre parênteses indicam que isso é uma média Tempo por requisição: A média do tempo real de execução para cada solicitação de conexão Taxa de transferência: Tráfego médio por segundo na rede, o que pode ajudar a descartar o problema do tráfego excessivo de rede causando tempos de resposta longos
|