Apache2 'caching' / 'mantendo na memória' uma página HTML estática (existe alguma coisa a ser obtida?)

1

Estou executando um site com uma popular página HTML estática de 99% (1 MB) na instância micro do Amazon EC2 que recebe cerca de 35.000 pageviews por dia. O site está mudando apenas uma vez a cada 3-4 horas ou mais e já está rodando o mod_deflate, ficando o tamanho da página em torno de 100KB.

Eu estou querendo saber se existe alguma maneira de dizer ao apache2 que a página deve estar na memória o tempo todo?

Ou já está em cache pelo apache2 ou disco de alguma forma (executando o Ubuntu, ext3)?

    
por abcde123483 01.10.2011 / 15:17

1 resposta

3

(meio) pontos técnicos

O

linux (e outros sistemas semelhantes ao Unix, e provavelmente qualquer outro SO descendente para servidores) manterá os dados de arquivos usados recentemente / freqüentemente na RAM. No linux isso é chamado de " pagecache ".

Para diretórios, o linux também mantém nomes de arquivos pesquisados recentemente e diretórios listados recentemente em " dentry " (entrada de diretório). Desta forma, procurar o mesmo nome de novo e de novo não causa um acesso ao disco, e nem precisa passar pelo código da camada do sistema de arquivos específico (digamos, ext3).

Assim, o Linux mantém os dados de arquivos e metadados na RAM, se um arquivo é usado com freqüência. Isso ocorre no kernel, então:

  • O Apache e outros processos do Linux não precisam fazer nada;
  • diferentes processos compartilham os recursos de cache do sistema de arquivos linux; se alguns programas precisarem ler um arquivo que outro programa leu (ou escreveu) recentemente, ele se beneficiará do cache.

Se cada programa tivesse que implementar seu próprio cache de disco, cada um deles tiraria memória, mesmo que eles precisassem dos mesmos arquivos. (Também ficaria confuso se algum processo fosse swap-out, com seu cache de arquivos RAM!)

Mas o fato de um arquivo ser geralmente lido inteiramente, portanto é totalmente armazenado em cache na RAM, não significa que acessos repetidos somente para este arquivo não causam nenhum acesso ao disco: já que o linux como outro Un * x tem um conceito do último tempo de acesso do arquivo ( atime ), ele terá que atualizar os metadados do arquivo no disco regularmente - a menos que você desative o tempo de acesso atualizando no nível fs (opção noatime ). Antes de fazer isso, você terá que se certificar de que nada depende dos horários de acesso corretos. Isso é principalmente um problema com os computadores pessoais, onde atime update impede a suspensão do disco, provavelmente não importa muito nos servidores. Eu mencionei isso principalmente para completar.

A verdadeira questão

Você fez o perfil do seu sistema? Você identificou problemas específicos de desempenho?

    
por 01.10.2011 / 15:58