Abertura acima de conexões de 1MLN stucks a 469K

0

Eu preciso configurar o servidor para lidar com mais de um milhão de conexões websocket abertas (Idealmente 1.5-2.0).

Eu usei a configuração de este blogpost:

sysctl -w fs.file-max=12000500
sysctl -w fs.nr_open=20000500
ulimit -n 20000500
sysctl -w net.ipv4.tcp_mem='10000000 10000000 10000000'
sysctl -w net.ipv4.tcp_rmem='1024 4096 16384'
sysctl -w net.ipv4.tcp_wmem='1024 4096 16384'
sysctl -w net.core.rmem_max=16384
sysctl -w net.core.wmem_max=16384

No entanto, meu aplicativo para aplicar novas conexões depois de atingir 469219 conexões. O que mais posso sentir falta? Eu realmente acho que algo está faltando na configuração do sistema operacional. Nosso aplicativo principal escrito em Java (com o servidor Tomcat), mas também obtive os mesmos resultados com o servidor NodeJS.

Usamos o Ubuntu com 16 GB de RAM.

    
por Peter Shipilo 21.12.2016 / 12:13

1 resposta

0

A postagem no blog afirma explicitamente, que os soquetes 12M usam 46 GB de RAM para a pilha TCP - além do que está em execução.

Se você tiver apenas 16 GB e, em seguida, iniciar o Tomcat com um aplicativo, acabará simplesmente com RAM insuficiente para aceitar mais conexões. Os números do NodeJS são semelhantes, mas não iguais, porque a RAM livre é semelhante, mas não é igual.

Atualize para 128 ou 256 GB e suspeito que funcionará bem.

    
por 21.12.2016 / 12:29