Мне нужно создать ферму серверов, которая может обрабатывать 5+ миллионов подключений, 5+ миллионов тем (по одной на каждого клиента), обрабатывать 300 тысяч сообщений в секунду.
Я попытался посмотреть, на что способны различные брокеры сообщений, поэтому в настоящее время я использую два экземпляра RHEL EC2 (r3.4xlarge), чтобы получить много доступных ресурсов. Так что вам не нужно его искать, у него 16vCPU, 122GB RAM. Я нигде не приближаюсь к этому пределу в использовании.
Я не могу превысить ограничение в 600 тыс. подключений. Поскольку нет никаких ограничений операционной системы (много ОЗУ/ЦП/и т. д.) ни на клиенте, ни на сервере, что меня ограничивает?
Я отредактировал /etc/security/limits.conf следующим образом:
* soft nofile 20000000
* hard nofile 20000000
* soft nproc 20000000
* hard nproc 20000000
root soft nofile 20000000
root hard nofile 20000000
Я отредактировал /etc/sysctl.conf следующим образом:
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
Для Apollo: экспорт APOLLO_ULIMIT=20000000
Для ActiveMQ:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.UseDedicatedTaskRunner=false"
ACTIVEMQ_OPTS_MEMORY="-Xms50G -Xmx115G"
Я создал 20 дополнительных частных адресов для eth0 на клиенте, затем присвоил их: ip addr add 11.22.33.44/24 dev eth0
Я ПОЛНОСТЬЮ осведомлен об ограничениях на 65 тыс. портов, поэтому я сделал это выше.
- Для ActiveMQ я получил: 574309
- Для Аполлона я получил: 592891
- Для Кролика я добрался до 90k, но ведение журнала было ужасным, и я не мог понять, что делать, чтобы подняться выше, хотя я знаю, что это возможно.
- Для Hive я дошел до пробного лимита в 1000. Жду лицензию
- IBM хочет обменять стоимость моего дома, чтобы использовать их - нет!