Max conexiones MQTT
Tengo la necesidad de crear una granja de servidores que pueda manejar más de 5 millones de conexiones, más de 5 millones de temas (uno por cliente), procesar mensajes de 300k / seg.
Traté de ver qué varios agentes de mensajes eran capaces, así que actualmente estoy usando dos instancias RHEL EC2 (r3.4xlarge) para hacer muchos recursos disponibles. Por lo tanto, no necesita buscarlo, tiene 16vCPU, 122GB de RAM. No estoy cerca de ese límite de uso.
No puedo pasar el límite de 600k conexiones. Dado que no parece haber ninguna limitación de O / S (mucha RAM / CPU / etc.) ni en el cliente ni en el servidor, ¿qué me limita?
He editado /etc/security/limits.conf de la siguiente manera:
* soft nofile 20000000
* hard nofile 20000000
* soft nproc 20000000
* hard nproc 20000000
root soft nofile 20000000
root hard nofile 20000000
He editado /etc/sysctl.conf de la siguiente manera:
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: export APOLLO_ULIMIT = 20000000
Para ActiveMQ:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.UseDedicatedTaskRunner=false"
ACTIVEMQ_OPTS_MEMORY="-Xms50G -Xmx115G"
Creé 20 direcciones privadas adicionales para eth0 en el cliente, luego las asigné: ip addr add 11.22.33.44/24 dev eth0
Soy TOTALMENTE consciente de los límites del puerto de 65k, por eso hice lo anterior.
Para ActiveMQ llegué a: 574309Para Apolo llegué a: 592891Para Rabbit llegué a 90k, pero el registro fue horrible y no pude averiguar qué hacer para ir más alto, aunque sé que es posible.Para Hive llegué al límite de prueba de 1000. En espera de una licenciaIBM quiere cambiar el costo de mi casa para usarlos, ¡no!