Sirva milhões de conexões simultâneas e arquivos estáticos?

3

Estou apenas curioso sobre as configurações do servidor para servir apenas arquivos estáticos de um servidor.

É possível construir um servidor que apenas para arquivos estáticos e atenda milhões de conexões simultâneas. Qual poderia ser o melhor serviço HTTPD para isso?

O servidor servirá apenas arquivos estáticos dos diretórios e não usará nenhum outro serviço ao lado de um HTTPD e, obviamente, nenhum PHP.

    
por DucDigital 08.08.2011 / 06:03

3 respostas

4

Milhões de conexões simultâneas? A menos que você esteja hospedando fluxos de vídeo ou outros arquivos grandes, os pedidos de HTTP geralmente terminam em tão pouco tempo que, mesmo com sites mais ocupados, você não obtém tantas conexões simultâneas . Se você fizer isso, você seriamente não tem apenas um servidor. Além disso, com esse tipo de tráfego, seu tráfego de rede estaria em um nível tão alto que não acho que um servidor seria sua melhor aposta.

Mas, vamos imaginar que você realmente execute um serviço com apenas um servidor e milhões de conexões simultâneas: nginx ou lighttpd seria a melhor opção. Em seguida, você provavelmente precisará ajustar muitos parâmetros do kernel, como fs.open . Além disso, você provavelmente precisará compilar seu próprio kernel.

Veja aqui slides sobre como a HEANET dimensionou seu Apache 2.x para 20 0000+ sessões simultâneas . Note que mesmo isso exigiu muitos ajustes.

    
por 08.08.2011 / 09:13
1

Espero que você esteja otimista com suas estimativas de tráfego, mas sua melhor opção para o serviço de ativos estáticos em grande escala será o nginx. Note que com tantas conexões simultâneas você terá que ajustar alguns parâmetros do kernel.

    
por 08.08.2011 / 06:43
1

"milhões" de conexões simultâneas podem ser um pouco difíceis de alcançar, mas a maioria dos servidores da web se enquadra nesses tipos de arquitetura: pré-fork (1 processo / 1 thread, 1 conexão), threaded (1 process / many threads, 1 thread por conexão), orientada a eventos (1 thread process / 1, muitas conexões). Existem, é claro, híbridos, como o apache mpm_worker, que é um híbrido de pré-fork e threaded.

Em geral, o pré-fork atende ao menor número de conexões porque criar um novo processo por conexão é caro e consome muitos recursos. Threaded é um pouco melhor, mas milhares ou milhões de threads podem ter muita sobrecarga também. Os sistemas orientados a eventos são tipicamente 1-process / 1-thread e usam IOs assíncronos / não-bloqueantes para alcançar concorrência muito alta com o mínimo de sobrecarga de recursos.

Você provavelmente desejará manter a família orientada a eventos para se aproximar de sua meta de "milhões de concorrentes". Alguns aplicativos baseados em eventos estão limitados a 1 CPU. Se você estiver em uma máquina com várias CPUs, será necessário executar uma instância por cpu (alguns servidores da Web podem cuidar disso para você, enquanto outros exigirão que você faça o script e gerencie-a por conta própria).

    
por 09.08.2011 / 20:35