Inquietando o resultado do benchmarking AB?

1

Eu sou um verdadeiro noob quando se trata de administração de sistemas. Estou executando um aplicativo em um MicroInstance EC2.

Antes de lançar publicamente, quero ter certeza de que atingi um nível mínimo de desempenho. Eu estou tentando alguns testes de estresse, mas eu tenho lutado para encontrar bons comps lá fora para me ajudar a entender o meu próprio desempenho.

Eu testei a página com a maior carga possível e estou curioso para saber se isso é adequado o suficiente para um site que está apenas sendo lançado e, na melhor das hipóteses, pode ver 10k únicos em uma semana se a imprensa acertar .

    ab -n 5000 -c 10 http://mysite.com

    requests/sec: 53.36
    time per request:  18.739 ms
    transfer rate: 12.66kb
    total transferred 1215000 bytes

Nenhuma solicitação com falha. Meu CPU ficou em torno de 49% e a memória não foi muito tributada. Média de carga aumentada em 5,70.

95% das solicitações foram atendidas em 500ms. Um pedido levou 84996ms.

Estou usando o Apache2.x com o mod_wsgi no Ubuntu 10.4. Tenho certeza que o MPM é o Prefork. Este servidor está no modo de teste, portanto, não há carga externa.

Concorrência parece ser a grande questão aqui. Quando eu removê-lo, o servidor é muito rápido. Quando adiciono mais simultaneidade além de 10, recebo um erro que diz: "o tempo limite especificado expirou (70007)".

Isso tudo pode ser discutível porque eu estou apenas começando. Estou curioso para ouvir opiniões.

Obrigado.

    
por Ben 12.05.2011 / 19:01

2 respostas

2

Algumas coisas que eu observaria ao ajustar o apache do prefork:

  • Verifique seus MaxClients e ServerLimit. Isso informa ao seu servidor quantos processos ele pode ter em execução de uma só vez. Você deve limitar com base na memória que cada processo é executado em comparação com suas limitações de RAM. Certifique-se de deixar memória para outros programas em execução no servidor (sistema, MySQL, etc)

  • Verifique o StartServer, MinSpareServers, MaxSpareServers. Certifique-se de iniciar o servidor com processos suficientes para lidar com solicitações de entrada e manter o suficiente para lidar com a carga. O custo de criação de novos tópicos é relativamente caro e diminui suas solicitações.

  • Mantenha seu KeepAliveTimeout muito baixo. Isso é basicamente quanto tempo um processo permanece aberto por tempo suficiente para capturar novas solicitações antes de passar para a próxima solicitação. Para o prefork, mantenho o meu em 2 KeepAliveTimeout 2

Apenas algumas sugestões ... espero que isso ajude

    
por 12.05.2011 / 19:37
0

Lembre-se de que as microinstâncias do EC2 têm explosão da CPU - você pode usar até duas unidades de computação, mas apenas por um curto período de tempo. Após esse período (relativamente pequeno), o uso da CPU é limitado por vários minutos.

Se você deseja um desempenho mais consistente, mude para um tipo de instância pequena.

    
por 12.05.2011 / 19:51