Estou configurando uma pilha nginx e otimizando a configuração antes de ir ao ar. Ao executar um teste de estresse na máquina, fiquei desapontado ao ver as coisas chegando a 150 solicitações por segundo, com um número significativo de solicitações que levam> 1 segundo para retornar. Estranhamente, a máquina em si não estava respirando com dificuldade.
Finalmente pensei em fazer ping na caixa e vi tempos de ping em torno de 100-125 ms. (A máquina, para minha surpresa, está em todo o país). Então, parece que a latência da rede está dominando meus testes. Executando os mesmos testes de uma máquina na mesma rede que o servidor (tempos de ping <1ms) e vejo> 5000 solicitações por segundo, o que está mais alinhado com o que eu esperava da máquina.
Mas isso me fez pensar: como determinar e relatar uma medida "realista" de solicitações por segundo para um servidor web? Você sempre vê alegações sobre desempenho, mas a latência da rede não deve ser levada em consideração? Claro que posso atender a 5000 solicitações por segundo em uma máquina próxima ao servidor, mas não em uma máquina em todo o país. Se eu tiver muitas conexões lentas, elas eventualmente afetarão o desempenho do meu servidor, certo? Ou estou pensando nisso tudo errado?
Perdoe-me se isso é engenharia de rede 101 coisas. Sou desenvolvedor por profissão.
Atualização: Editado para maior clareza.
ab
tem uma opção de simultaneidade. O que você definiu? Além disso, se você estiver testando a partir de uma conexão ADSL doméstica, é provável que o teste seja dominado por sua largura de banda e não estará testando nada no servidor.Respostas:
Se você se importa com o desempenho do seu servidor quando acessado de algum lugar do mundo, peça a um amigo em algum lugar do mundo (deve ter boa largura de banda) para instalar o sproxy + siege em sua caixa Linux. Basta baixar, configurar, fazer. Essas ferramentas são pequenas, elas compilam em segundos.
Primeiro, comece
sproxy
na caixa do linux. Por padrão, ele será executado na porta 9001 no host local (127.0.0.1). Se você quiser acessá-lo de fora, basta passar o endereço IP de saída como parâmetro.Agora conecte-se ao sproxy configurando seu navegador para usar este ip e porta como proxy para HTTP. Tudo o que você faz a partir de agora é gravado por sproxy e pode ser reproduzido mais tarde. Agora navegue pelo site, faça o que seus clientes farão e tente fazer coisas "caras" que usam o servidor.
Quando terminar, finalize o sproxy pressionando CTRL ^ C. Ele registrou suas ações para
$HOME/urls.txt
. Mova o arquivo para o local onde o cerco reside. Para iniciar o teste de estresse, executesiege -f urls.txt -d NUM -c NUM
.d
significa atraso entre solicitações; ao fazer testes de desempenho, use 1 (segundo).c
significa o número de usuários simultâneos simulados. Escolha à vontade, mas comece baixo. O Siege mostrará o número de transações por segundo, erros, quanto tempo as solicitações médias levaram etc. É uma ferramenta poderosa e fácil de usar.Se você precisar de mais informações sobre os parâmetros (há muitos), verifique o cerco manual de um o manual do sproxy
Para obter resultados mais realistas, permita que muitas pessoas testem seu servidor de vários países ao mesmo tempo e que enviem as estatísticas.
fonte
A medida realista de solicitações / s deve ser tomada nos logs de acesso. Na IMO, a latência da solicitação não tem nada a ver com a carga do servidor, pois o servidor processa todas as solicitações na mesma velocidade, independentemente de sua origem.
fonte
Considere usar serviços como o Soasta Cloudtest . Com ele, você pode obter relatórios bastante detalhados sobre seus testes e executar testes de desempenho de vários provedores públicos de nuvem / virtualização. Você pode configurar o quão duro e por quanto tempo você deseja martelar seus servidores. Eles também têm um livre " Lite " versão que você possa ver o que pode fazer antes de cometer algum dinheiro.
fonte