Solicitações muito baixas / segundo com instalação nova do NGINX

5

Com uma nova instalação do nginx, obtenho esses resultados executando o benchmark do apache, o que eu acho muito estranho. A página buscada é a página padrão de teste index.html estática instalada pelo nginx. Correndo ab localmente tem pedidos muito altos / por segundo, mas remotamente é drasticamente menor. Eu desativei meu firewall temporariamente com testes.

AB -n 100 em execução localmente:

Document Path: /
Document Length: 3698 bytes

Concurrency Level: 1
Time taken for tests: 0.21347 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 391000 bytes
HTML transferred: 369800 bytes
Requests per second: 4684.50 [#/sec] (mean)
Time per request: 0.213 [ms] (mean)
Time per request: 0.213 [ms] (mean, across all concurrent requests)
Transfer rate: 17847.94 [Kbytes/sec] received

AB -n 100 sendo executado remotamente (testado em duas máquinas diferentes, uma no Windows 7 e outra no Mac OS 10.7):

 
Concurrency Level: 1
Time taken for tests: 12.502 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 391000 bytes
HTML transferred: 369800 bytes
Requests per second: 8.00 [#/sec] (mean)
Time per request: 125.020 [ms] (mean)
Time per request: 125.020 [ms] (mean, a
Transfer rate: 30.54 [Kbytes/sec] re

Connection Times (ms)
min mean[+/-sd] median max
Connect: 38 43 1.6 42 56
Processing: 78 82 2.1 82 97
Waiting: 38 43 1.3 43 49
Total: 121 125 2.6 125 139

Todos os nossos sites são executados no apache, que também tem esse mesmo problema. Eu instalei o nginx para tentar ver se era um problema de configuração do apache, mas claramente não é. Eu não consigo determinar por que existe uma discrepância tão grande entre os resultados, e espero que alguém possa fornecer algumas dicas.

Isso é normal? Há algo mal configurado no meu servidor?

    
por Adam Gerbert 15.01.2012 / 19:12

1 resposta

3

O seu teste abrandou de forma tão chocante porque é remoto e o teste ficou com um problema na latência da solicitação.

A taxa de transferência é uma preocupação aqui (quão rápido é o link do seu cliente para o servidor), mas o principal problema que vejo é que sua simultaneidade está definida como 1 - isso significa que antes de enviar a próxima solicitação, ab está aguardando para cada solicitação terminar.

Como está dito, está levando Time per request: 125.020 [ms] (mean) para cada solicitação. Como o keep-alive de HTTP também está desativado por padrão em ab , imagino que os tempos de ida e volta que você recebe quando você ping do servidor estão em torno de 60ms?

Teste ab -n 100 -k -c 10 - ele não eliminará todo o atraso de latência, mas deverá reduzir o tempo por solicitação pela metade e a média entre todos os concorrentes por um fator de 10 - provavelmente, completando seu teste em cerca de 20 vezes mais rápido.

    
por 15.01.2012 / 22:44