Eu tenho um VPS de baixo orçamento (1 GB de RAM + 2 CPUs) para rodar alguns (5 - 10) sites pequenos diferentes (estáticos e dinâmicos). Esses sites têm tráfego (muito) baixo (média de 500 visitas únicas para todos os sites).
O problema que tenho é que o apache2 é muito lento para arquivos HTML (e páginas dinâmicas), mas não para outros conteúdos estáticos: arquivos estáticos html são manipulados em apenas 16 solicitações / segundo, páginas dinâmicas (wordpress) outro conteúdo estático (como imagens e .txt) a 400 solicitações / segundo.
Estou executando o apache2 com o mod_php e estou procurando uma explicação do motivo pelo qual um arquivo html leva 25 vezes mais tempo para carregar do que uma cópia .txt do mesmo arquivo?
Testa com o apachebench (executado no mesmo servidor):
$ ab -n 1000 -c 30 http://mysite/index.html
...
Concurrency Level: 30
Time taken for tests: 58.987 seconds
Complete requests: 1000
Failed requests: 962
(Connect: 0, Receive: 0, Length: 962, Exceptions: 0)
Write errors: 0
Total transferred: 6619655 bytes
HTML transferred: 6337655 bytes
Requests per second: 16.95 [#/sec] (mean)
Time per request: 1769.599 [ms] (mean)
Time per request: 58.987 [ms] (mean, across all concurrent requests)
Transfer rate: 109.59 [Kbytes/sec] received
...
versus
$ ab -n 1000 -c 30 http://mysite/index.txt
...
Concurrency Level: 30
Time taken for tests: 2.314 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 6564000 bytes
HTML transferred: 6284000 bytes
Requests per second: 432.19 [#/sec] (mean)
Time per request: 69.414 [ms] (mean)
Time per request: 2.314 [ms] (mean, across all concurrent requests)
Transfer rate: 2770.40 [Kbytes/sec] received
...
Percebi que o arquivo apachebench do arquivo .html me dá muita falha, enquanto o .txt não. Eu não tenho nenhuma explicação para isso, no entanto, como o conteúdo dos arquivos .html são puramente estáticos (exceto alguns javascript que ab não analisa).
Extra: Eu ajustei o maxClients para que o servidor não esteja trocando:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 20
MaxClients 20
MaxRequestsPerChild 5000
KeepAlive Off
HostnameLookups Off
Eu também desativei o log de acesso do apache e AllowOverride é igual a None
Durante o teste de estresse dos arquivos html, a cpu não atinge mais de 20%
O que poderia causar esse comportamento?
Tags performance apache-2.2