Determinar uma medida realista de solicitações por segundo para um servidor da web

15

Estou configurando uma pilha nginx e otimizando a configuração antes de ir ao ar. Correndo ab para testar a máquina, fiquei decepcionado ao ver as coisas chegando a 150 solicitações por segundo com um número significativo de pedidos tomando > 1 segundo para retornar. Estranhamente, a máquina em si não estava nem respirando com dificuldade.

Eu 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 é mais em linha 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 da Web? Você sempre vê declarações sobre desempenho, mas não deve haver latência de rede levado em consideração? Claro que posso atender 5000 solicitações por segundo a uma máquina ao lado do servidor, mas não a 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 é uma questão de engenharia de rede. Eu sou um desenvolvedor pelo comércio.

Atualização: Editada para maior clareza.

    
por Don 22.03.2012 / 01:33

3 respostas

3

Se você se preocupa com o desempenho do seu servidor quando acessado de algum lugar do mundo, pergunte a um amigo em algum lugar do mundo (deve ter boa largura de banda) para instalar o sproxy + cerco na sua caixa linux. Basta baixar, configurar, fazer. Essas ferramentas são pequenas, compilarem em segundos.

Primeiro, inicie sproxy na caixa 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 pelo sproxy e pode ser repetido mais tarde. Agora navegue em seu site, faça coisas que seus clientes fariam e tente fazer coisas "caras" que usam seu servidor.
Quando terminar, finalize o sproxy pressionando CTRL ^ C. Registrou suas ações para $HOME/urls.txt . Mova o arquivo para onde o cerco reside. Para iniciar o teste de estresse, execute siege -f urls.txt -d NUM -c NUM . d significa atraso entre solicitações, ao fazer testes de desempenho, use 1 (segundo). c representa o número de usuários simultâneos simulados. Escolha à vontade, mas comece baixo. Siege irá mostrar-lhe o número de transações por segundo, errorrate, quanto tempo médio pedidos levou etc. É uma ferramenta poderosa e fácil de usar.
Se você precisar de mais informações sobre parâmetros (há muitos), verifique o manual de cerco e o manual do sproxy

Para obter resultados mais realistas, permita que muitas pessoas testem seu servidor de vários países de uma só vez e permitam que ele envie as estatísticas.

    
por 31.03.2012 / 05:34
2

As solicitações realistas / segundo medida devem ser obtidas dos registros de acesso. 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.

    
por 03.12.2012 / 11:47
1

Considere o uso de 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 difícil e por quanto tempo deseja martelar seus servidores. Eles também têm uma versão gratuita " lite " para que você possa ver o que ela pode fazer antes de cometer algum dinheiro.

    
por 09.04.2012 / 05:20