Como evitar a primeira inicialização lenta de um site?

1

Tenho certeza de que você notou que, para muitos servidores, o tempo de carregamento do site é bastante longo se você for o primeiro visitante por algumas horas. Você tem alguma idéia de por que este é o caso (é apenas o cache do servidor?) E como tornar o site rápido mesmo para o primeiro visitante? Vamos dar uma configuração normal de LAMP neste caso. Obrigado pela sua ajuda!

    
por ciscoheat 06.03.2011 / 23:24

1 resposta

8

Existem muitas causas possíveis. Há quase certamente não apenas um único motivo.

Algumas possibilidades:

  • O site está sendo executado sob algum mecanismo de agrupamento como FastCGI, mod_php / mod_perl / mod_python etc. Se esses ou o Apache não estiverem configurados para manter um pool mínimo de servidores, eles precisarão reiniciar o aplicativo quando uma nova solicitação chegar e não há servidores disponíveis com esse aplicativo já carregado.
  • O aplicativo usa um pool de conexões com o banco de dados. O mesmo problema acima, exceto que é a conexão do banco de dados que precisa ser restabelecida. Alguns bancos de dados relacionais podem ser muito lentos na abertura de uma nova conexão (muita sobrecarga)
  • Vários mecanismos de armazenamento em cache (para sites de alto desempenho que executam balanceadores de carga ou caches como o memcached) ao longo do caminho podem precisar atualizar suas informações diretamente do site se as informações que tiverem forem obsoletas. Também poderia se aplicar ao cache local do seu navegador: embora ele normalmente possa ignorar todos os arquivos estáticos adicionais em um site como css, js, imagens, uma vez que estes expirem do cache, ele precisa buscá-los novamente.
  • Os sites podem ter atividades de manutenção, como backups que ocorrem quando a carga é baixa e o site não está sendo acessado.
  • Pode até ser tão baixo quanto o cache de disco do sistema operacional do servidor, que pode ter seu cache preenchido com outros sites no mesmo servidor, empurrando a versão em cache do site que não foi acessado por algum tempo (exatamente o que o cache de disco deve fazer, armazene em cache arquivos usados com freqüência, não usados com pouca freqüência). O atraso que isso deveria causar provavelmente seria muito pequeno e não perceptível para um ser humano.

As estratégias de mitigação dependem, é claro, da causa real. Mas algumas coisas que normalmente devem ser feitas:

  • Verifique se os parâmetros MinSpareServers / MinSpareThreads do Apache e outras configurações de desempenho estão configurados corretamente. Tente entender como, quando e porque o Apache gera mais servidores / threads.
  • Verifique se os servidores de aplicativos, como o FastCGI, também estão configurados corretamente para manter um pool suficiente disponível.
  • Configure corretamente o pool de conexões com o banco de dados ou mantenha uma conexão de banco de dados persistente sempre aberta.
  • Garanta que todos os seus arquivos incluídos (css, js, etc) sejam armazenados em cache e tenham tempos de expiração razoáveis.
por 06.03.2011 / 23:57