Apache versus Nginx
Depois de uma fase conturbada e sem artigos novos vamos retornar escrevendo um comparativo entre Nginx e Apache.
Para elaborar os testes criamos quatro arquivos de naturezas diferentes para serem servido pelo Apache e posteriormente pelo Nginx para que possamos comparar.
Para medir a capacidade de cada servidor utilizamos um outro computador conectado na mesma rede do servidor testado e com a rede isolada efetuamos os testes usando ab (Apache Benchmark).
Os artefatos
Como artefatos utilizamos um arquivo html estático nomeado estatica.html com o conteúdo:
<h1>Testando</h1>
<p>Isto é uma página estática</p>
Como podemos ver aqui:
Um arquivo dinamica.php com um conteúdo:
<?php
echo "<h1>Isto é uma página dinâmica</h1>";
for($i=0; $i<10; $i++)
{
for($j=0; $j<10; $j++)
{
echo "$i.$j";
echo PHP_EOL;
}
}
?>
Como vemos aqui:
Um arquivo info.php que gera as configurações do php muito utilizado para testes com o conteúdo:
<?php
phpinfo();
E um arquivo de imagem de 80KB:
Montando o ambiente
Primeiro instalamos o tradicional LAMP, com exceção do MySQL, onde o php roda sobre o Apache Handler como podemos ver nas informações do phpinfo:
Fizemos um teste acessando os arquivos e em seguida desligamos o serviço do apache:
sudo service httpd stop
Istalamos o chamado LEMP, também com exceção do MySQL, onde o php roda sobre o php-fpm que serve as páginas através do fastcgi como podemos ver:
Testamos novamente para ver se nossas configurações funcionaram e em seguida desligamos o serviço do Nginx e do PHP-FPM:
sudo service nginx stop
sudo service php-fpm stop
Para maiores informações sobre a instalação do LAMP e do LEMP acesse outros artigos meus neste blog em mais antigos ou pelas tags / marcadores.
O Teste
O ambiente usado como servidor foi um Intel Core i5 com 4GB de memória rodando Fedora 17 com Apache 2.2.22, Nginx 1.0.15 e PHP 5.4.7.
A ferramenta que utilizamos para medição foi o Apache Benchmark e rodamos através do comando:
ab -kc 10 -t 30 http://url-de-destino/arquivo.ext
Onde:
- k – é keep alive
- c – é quantidade de concorrência
- t – é tempo em segundos
Com o servidor Apache ligado executamos o comando apontando para cada arquivo testado (estático, dinâmico, phpinfo e imagem) coletando os resultados.
Depois desligamos o servidor Apache, ligamos o servidor Nginx junto com o PHP-FPM e repetimos os testes coletando novamente os resultados
Os resultados
Como podemos ver o Nginx teve uma melhor performance servindo os arquivos testados.
9871 requisições completadas no Nginx contra 4561 requisições no Apache para a página dinamica.php
21231 requisições completadas no Nginx contra 10127 requisições no Apache para a página estatica.html
639 requisições completadas no Nginx contra 621 requisições no Apache para o arquivo de imagem.
734 requisições completadas no Nginx contra 501 requisições no Apache para o arquivo info.php,
Concluindo:
Com Nginx tivemos performances de até 116% maior que Apache2 para o mesmo ambiente.
Divirtam-se e até a próxima…