I need to create a server farm that can handle 5 million connections, more than 5 million topics (one for each client), process messages 300 sec / sec.
I tried to figure out which different message brokers were capable of, so I am currently using two instances of RHEL EC2 (r3.4xlarge) to create the many available resources. Thus, you do not need to look for it, it has 16vCPU, RAM 122GB. I do not see this limit in use.
I canβt pass the limit of 600 thousand connections. Since, apparently, there are no restrictions on O / S (a lot of RAM / CPU / etc.) Neither on the client nor on the server, what limits me?
I edited /etc/security/limits.conf as follows:
* soft nofile 20000000 * hard nofile 20000000 * soft nproc 20000000 * hard nproc 20000000 root soft nofile 20000000 root hard nofile 20000000
I edited the /etc/sysctl.conf file as follows:
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
For Apollo: export APOLLO_ULIMIT = 20000000
For ActiveMQ:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.UseDedicatedTaskRunner=false" ACTIVEMQ_OPTS_MEMORY="-Xms50G -Xmx115G"
I created 20 additional personal addresses for eth0 on the client, and then assigned them: ip addr add 11.22.33.44/24 dev eth0
I FULLY know the limits of port 65k, so I did it above.
- For ActiveMQ I received: 574309
- For Apollo, I got to: 592891
- For Rabbit, I got to 90k, but the registration was terrible and I could not figure out what to do to go higher, although I know that this is possible.
- For Hive, I got a trial limit of 1000. Waiting for a license
- IBM wants to trade the value of my home to use them - nah!