A maneira mais rápida / escalável de servir arquivos estáticos?

1

Quais opções existem para fornecer arquivos estáticos muito rapidamente?

Existe alguma opção que permita colocar o arquivo em cache na memória do servidor, etc? Por exemplo, armazenando em cache os arquivos js na memória.

Eu sei do nginx, mas ele ainda lê o arquivo do disco rígido toda vez e o que eu quero fazer é reduzir a E / S do disco, armazenando-os na memória.

Eu tenho cerca de 1000 pedidos em arquivos js a cada segundo e eles estão reduzindo a velocidade do servidor, até mesmo quebrando o apache algumas vezes.

Quais outras alternativas existem para o nginx rodando ao longo de uma pilha LAMP no CentOS 5.6

    
por Vish 04.08.2011 / 19:20

4 respostas

2

A RAM é definitivamente mais rápida que o disco (se precisar de detalhes, verifique números que todos devem saber ).

Se você tiver a memória disponível no servidor da Web, poderá criar um disco RAM. Se você tem uma matriz de sistemas, talvez algo como memcached seja melhor.

    
por 05.08.2011 / 03:06
1

O Zeus é o servidor web mais rápido que eu conheço. Na inicialização copie tudo para um disco RAM ...

Se você quiser / precisar ficar com uma pilha LAMP, há módulos de aceleração para o Apache para conteúdo estático, e um proxy reverso de front end como o Squid, Vanrish ou HAProxy também pode ajudar.

Dependendo do motivo pelo qual você precisa ser um servidor "mais rápido" (um termo sem sentido neste contexto), você pode se beneficiar de um farm de balanceamento de carga ou de uma conexão de Internet diferente.

    
por 05.08.2011 / 03:33
1

I know of nginx but it still reads the file of the hard disk every time

Não, não lê o arquivo todas as vezes do disco. Como você está usando o CentOS e, portanto, um kernel do Linux, é certo que o death armazena em cache arquivos acessados com freqüência e entradas de diretório na RAM.

Você tem muito mais arquivos estáticos "quentes" do que seu servidor tem RAM ou alguma coisa está consumindo sua E / S de disco. Alguns milhares de pedidos para arquivos estáticos devem ser um amendoim para todos os softwares de servidor web razoáveis. Até mesmo o Apache deve lidar com isso OK, embora lighttpd ou nginx sejam provavelmente mais adequados para essa tarefa, especialmente se os arquivos estáticos forem grandes.

Talvez o nível de registro seja tão alto que a escrita constante torture HD? Se for sobre isso e você precisar armazenar os logs, considere enviar os logs para um servidor syslog central separado pela rede.

    
por 05.08.2011 / 08:33
0

Eu sigo a sugestão de usar um sistema de cache como o Varnish. Dependendo de suas necessidades, se você tiver algum conteúdo dinâmico, sugiro fazer uma configuração como esta:

Use o Varnish como o front-end, com o Apache AND Nginx no back-end. Quando algo é solicitado que não é armazenado em cache, ele (Varnish) passa a solicitação para o Apache para o conteúdo dinâmico e passa a solicitação para o Nginx para o conteúdo estático.

Dessa forma, a maioria das suas coisas é armazenada na RAM (cache de verniz). O Varnish é um incrivelmente rápido servidor de cache / proxy reverso (e também pode ser configurado para ser um bom balanceador de carga para vários servidores).

    
por 05.08.2011 / 04:07