Testamos recentemente a escalabilidade do NGINX para balanceamento de carga de conexões WebSocket . Mesmo com 50.000 conexões WebSocket ativas, o NGINX exigiu menos de 1 Gb de memória e menos de 1 núcleo de capacidade de CPU e, quando carregado com conexões muito ocupadas, o uso de memória foi estável e aumentou mais lentamente do que o tamanho da mensagem. O desempenho no seu ambiente dependerá da natureza do seu aplicativo, mas os resultados desses testes podem fornecer alguma indicação da quantidade de recursos que você pode esperar que o NGINX use.
As seguintes máquinas foram usadas para este teste:
Fizemos dois conjuntos de testes.
O primeiro conjunto de testes simulou conexões de longa duração e, em sua maioria, ociosas. O número de conexões variou de 1.000 a 50.000, o tamanho das mensagens de 10 a 4.096 bytes e a frequência das mensagens de 0,1 a 10 segundos (o que consideramos baixo).
Os resultados mostram que a memória total necessária para conexões WebSocket depende do número de conexões e que a memória usada por conexão é consistente. A utilização da memória não é afetada pelo tamanho ou frequência da mensagem. A utilização da CPU basicamente acompanha o número de conexões e mesmo com 50.000 conexões não foi utilizado um núcleo completo da CPU. A utilização da CPU representada aqui é normalizada para um único núcleo somando a utilização da CPU em todos os núcleos. Os gráficos a seguir mostram os resultados para este conjunto de testes:
O segundo conjunto de testes simulou conexões de curta duração, mas altamente ativas. O número de conexões simultâneas foi mantido constante em 500, com 50 mensagens por conexão e sem atraso entre as mensagens. O tamanho da mensagem variou de 1 a 4096 bytes
Os resultados mostram que, com um número fixo de conexões simultâneas, a utilização total da memória é um fator do tamanho da mensagem, assim como a memória usada por conexão, mas em ambos os casos a quantidade de memória não varia muito e varia de maneira sublinear, aumentando em menos de 15%.
Durante esses testes, o NGINX apresentou desempenho previsível e escalável ao fazer proxy de servidores WebSocket. Esses foram testes sintéticos e não necessariamente representativos de uma aplicação do mundo real, portanto, os resultados dos testes feitos em outros sistemas podem ser diferentes. Para mais informações, consulte:
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."