what resources are needed for serving static content?
How much RAM is used for each file transfer?
Primeiro, para o mesmo número de trabalhadores, o G-WAN v4.7 + está usando muito menos memória RAM do que o Nginx na inicialização:
> Server 'nginx' process topology:
---------------------------------------------
6] pid:21228 Process RAM: 0.77 MB
5] pid:21229 Process RAM: 2.44 MB
4] pid:21230 Process RAM: 2.44 MB
3] pid:21231 Process RAM: 2.44 MB
2] pid:21232 Process RAM: 2.44 MB
1] pid:21233 Process RAM: 2.44 MB
0] pid:21234 Process RAM: 2.44 MB
---------------------------------------------
Total 'nginx' server footprint: 15.39 MB
> Server 'gwan' process topology:
---------------------------------------------
6] pid:6054 Thread
5] pid:6053 Thread
4] pid:6052 Thread
3] pid:6051 Thread
2] pid:6050 Thread
1] pid:6049 Thread
0] pid:5839 Process RAM: 2.19 MB
---------------------------------------------
Total 'gwan' server footprint: 2.19 MB
O G-WAN usa encadeamentos (um por núcleo normalmente), o Nginx usa processos (um por núcleo normalmente) e processos arrastam mais sobrecarga, exigem sincronização via memória compartilhada, etc. Ambos usam o modelo "assíncrono" de manipulação de eventos.
Note que o G-WAN pode crescer automaticamente para mais de 1 milhão de conexões simultâneas enquanto o Nginx está limitado a suas worker_connections
settings (definido em apenas 4096 no teste ab.c acima).
what is not clear to me is if there is memory overhead per connection: i.e. if nginx or gwan consumes memory for every hit?
O conto é que o G-WAN v4.7 + (onde o cache de memória está desabilitado por padrão) consome muito menos RAM que o Nginx, para todos os tamanhos de arquivo, enquanto atende mais solicitações por segundo.
A longa história é que, enquanto o Nginx consome mais e mais memória, mesmo com novas solicitações keep-alived de HTTP, o uso de memória do G-WAN pode permanecer estável para solicitações keep-alived, e cresce muito menos do que para Nginx. solicitações de keep-alived.
Nosso wrapper weighttp ab.c mede o consumo de memória do aplicativo do servidor e do sistema durante a duração do teste. E isso mostra que o Nginx coloca um peso maior no sistema em relação ao consumo de recursos de memória.
Isso se deve à maneira como cada servidor da Web está lidando com solicitações e alocando memória.
If I have 10 request of a 5 mb file in the same time, will this mean there will be 50mb memory used for serving it? Maybe + memory for threads (I don't know if nginx or gwan uses threads for evey connection).
Os dois servidores (Nginx e G-WAN) usam sendfile()
para que o kernel (em vez do aplicativo) esteja alocando os recursos para E / S.
Os servidores da Web ainda alocarão recursos, mas isso é para manter o contexto de cada conexão, em vez de para armazenar em buffer a E / S do disco.
Portanto, o consumo mínimo depende do tamanho dos fragmentos de arquivos enviados em cada chamada sendfile()
, e não diretamente do tamanho total do arquivo.
O tamanho totfile tem uma influência no longo prazo para altas simultaneões, mas isso é devido à quantidade de pedaços que precisam ser armazenados em cache pelo kernel.
Mais alguma pergunta, entre em contato conosco no G-WAN. Investimos pesadamente em aplicações semelhantes à CDN.