Conexões MQTT máximas
Preciso criar um farm de servidores que possa lidar com mais de 5 milhões de conexões, mais de 5 milhões de tópicos (um por cliente) e processar 300 mil mensagens / s.
Tentei ver o que vários intermediários de mensagens eram capazes e, atualmente, estou usando duas instâncias do RHEL EC2 (r3.4xlarge) para disponibilizar muitos recursos. Então você não precisa procurar, ele tem 16vCPU, 122GB RAM. Não estou nem perto desse limite de uso.
Não consigo passar o limite de conexões de 600k. Como não parece haver nenhuma limitação de O / S (muita RAM / CPU / etc.) No cliente nem no servidor, o que está me limitando?
Eu editei o /etc/security/limits.conf da seguinte maneira:
* soft nofile 20000000
* hard nofile 20000000
* soft nproc 20000000
* hard nproc 20000000
root soft nofile 20000000
root hard nofile 20000000
Eu editei o /etc/sysctl.conf da seguinte maneira:
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 5242880 5242880 5242880
net.ipv4.tcp_tw_recycle = 1
fs.file-max = 20000000
fs.nr_open = 20000000
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_syn_backlog = 10000
net.ipv4.tcp_synack_retries = 3
net.core.somaxconn=65536
net.core.netdev_max_backlog=100000
net.core.optmem_max = 20480000
Para Apollo: exportar APOLLO_ULIMIT = 20000000
Para o ActiveMQ:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.UseDedicatedTaskRunner=false"
ACTIVEMQ_OPTS_MEMORY="-Xms50G -Xmx115G"
Criei 20 endereços privados adicionais para eth0 no cliente e os atribuí: ip addr add 11.22.33.44/24 dev eth0
Estou ciente dos limites da porta de 65k e foi por isso que fiz isso acima.
Para o ActiveMQ, cheguei a: 574309Para a Apollo, cheguei a: 592891Para Rabbit, cheguei aos 90k, mas o registro foi péssimo e não consegui descobrir o que fazer para subir mais, embora eu saiba que é possível.Para o Hive, cheguei ao limite de teste de 1000. Aguardando uma licençaA IBM quer negociar o custo da minha casa para usá-los - nah!