Taxa de transferência de largura de banda com um servidor HTTP [closed]

1

Eu quero configurar o nginx como um proxy reverso para arquivos estáticos (imagens e vídeos).

Alguém pode compartilhar algumas estatísticas de taxa de transferência obtidas com o nginx (e outros servidores em geral)? Você acha que um servidor high-end pode lidar com centenas ou mesmo milhares Mbit / s? (Eu sei que servidores de streaming podem, não sei sobre servidores HTTP.)

    
por Ron 28.10.2011 / 22:27

2 respostas

2

Normalmente, a taxa de transferência é limitada pelo número de solicitações por segundo. Isso depende de muitos fatores.

O primeiro gargalo será o armazenamento. Você pode remover esse gargalo usando muita memória para o cache do sistema de arquivos.

O próximo gargalo será a carga da CPU causada por interrupções. Você resolverá isso usando NICs que permitem o descarregamento de várias tarefas e a configuração da união de interrupções.

Em seguida, o uso da CPU nginex. Você resolverá isso escalando (use CPUs melhores) e, em seguida, horizontalmente (adicione mais CPUs e servidores).

Para todas as alterações, carregue os testes e monitore tudo (CPU, E / S, switches, etc.). Certifique-se de usar algum hardware bom como máquinas de teste, caso contrário, o gargalo pode se tornar sua máquina de teste.

    
por 28.10.2011 / 23:16
2

Depende. O tamanho médio da solicitação, o número de conexões keep-alive, a taxa de acertos do cache do sistema de arquivos, a qualidade do driver da NIC e os parâmetros de ajuste do dirver / OS são de grande importância. Com o cache do sistema de arquivos sendo o mais importante.

Por exemplo, será fácil atingir 10 Gbps se você enviar cópias do mesmo vídeo de 500 Mbyte para algumas centenas de clientes simultaneamente e todo o arquivo de vídeo estiver em cache. Se você estiver servindo bilhões de imagens pequenas ou javascripts, e a taxa de acertos do cache for baixa, você terá sorte em atender 100 Mbps.

Por melhor que seja o nginx, a velocidade de envio é limitada pela velocidade com que consegue ler os dados. 10 Gbps é aproximadamente 1 GByte / seg. Se o conjunto de dados for todo vindo do cache de RAM, isso será possível. Caso contrário, você vai afunilar na camada de armazenamento (a menos que você tenha vários SSDs rápidos em uma configuração RAID ou um monte de ferrugem). Observe também que você precisará executar vários processos de trabalho nginx por núcleo para evitar o bloqueio no acesso ao disco no Linux, porque o E / S assíncrono no Linux é basicamente quebrado por design.

    
por 28.10.2011 / 23:16

Tags