Por que o Apache 2.4.7 é tão rápido quanto o NginX 1.4.6?

1

Estou muito confuso agora ...

Eu sempre usei o Nginx para servir arquivos estáticos e passar o php para o Apache. Eu construí uma nova caixa de 4GB Ram, instalado o Apache 2.4.7 com módulo mpm_prefork e NginX 1.4.6. Eu configurei o que eu precisava e decidi executar alguns testes ab. Fiquei chocado com o que vi. Em todos os testes ab, o Apache fez tão bem quanto o NginX.

Isso é correto para o Apache 2.4? Eu li sobre os upgrades de desempenho com o 2.4, no entanto, no passado, o NginX destruiria o Apache. Estou faltando alguma coisa?

Apache:

Concurrency Level:      100
Time taken for tests:   1.157 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      279000 bytes
HTML transferred:       21000 bytes
Requests per second:    864.65 [#/sec] (mean)
Time per request:       115.654 [ms] (mean)
Time per request:       1.157 [ms] (mean, across all concurrent requests)
Transfer rate:          235.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       24   32  11.3     27     236
Processing:    27   78  15.6     77     380
Waiting:       26   78  15.6     77     379
Total:         55  109  21.1    104     404

Percentage of the requests served within a certain time (ms)
  50%    104
  66%    116
  75%    121
  80%    123
  90%    129
  95%    135
  98%    162
  99%    173
 100%    404 (longest request)

NginX:

Concurrency Level:      100
Time taken for tests:   1.026 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      362000 bytes
HTML transferred:       21000 bytes
Requests per second:    975.00 [#/sec] (mean)
Time per request:       102.564 [ms] (mean)
Time per request:       1.026 [ms] (mean, across all concurrent requests)
Transfer rate:          344.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       24   33  14.4     29     223
Processing:    24   34  39.2     28     664
Waiting:       24   34  39.2     28     664
Total:         50   67  42.2     57     691

Percentage of the requests served within a certain time (ms)
  50%     57
  66%     72
  75%     76
  80%     77
  90%     80
  95%     86
  98%     97
  99%    240
 100%    691 (longest request)

Isso é consistente em todos os meus testes. Este teste tem a maior lacuna de desempenho de todos os meus testes. Normalmente, o Apache está chegando em cerca de 5% -10% menos em solicitações brutas / s de NginX.

Se o Apache 2.4 estiver perto do NginX, então não vejo nenhum ponto em configurar um proxy reverso e toda a complexidade que o acompanha.

Pensamentos?

    
por Eko3alpha 02.04.2015 / 15:35

1 resposta

1

Em um teste como este, eu esperaria que o Apache mantivesse 100 processos-filhos vivos durante a duração do teste assim que eles fossem iniciados, assim, como resultado, ele conseguirá um desempenho comparável ao desempenho único orientado a eventos. modelo de processo do Nginx. Eu aposto que você pode até mesmo fechar ainda mais a diferença de benchmark se você definir StartServers e MinSpareServers como 100 para o Apache. Eu esperaria que o uso da memória em todos os processos do httpd fosse maior, no entanto, para obter a mesma simultaneidade, o que pode ou não ser uma grande desvantagem, dependendo da RAM disponível e da concorrência esperada máxima.

    
por 02.04.2015 / 16:42