我需要创建一个可以处理 5+ 百万个连接、5+ 百万个主题(每个客户端一个)、处理 300k 消息/秒的服务器场。
我试图查看各种消息代理的能力,因此我目前正在使用两个 RHEL EC2 实例 (r3.4xlarge) 来提供大量可用资源。所以你不需要查,它有 16vCPU,122GB RAM。我离使用限制还差得很远。
我无法通过 600k 连接限制。由于客户端和服务器上似乎都没有任何 O/S 限制(大量的 RAM/CPU/等),是什么限制了我?
我编辑了 /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_ULIMIT=20000000
对于 ActiveMQ:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.UseDedicatedTaskRunner=false"
ACTIVEMQ_OPTS_MEMORY="-Xms50G -Xmx115G"
我在客户端上为 eth0 创建了 20 个额外的私有地址,然后分配它们:ip addr add 11.22.33.44/24 dev eth0
我完全了解 65k 端口限制,这就是我执行上述操作的原因。
- 对于 ActiveMQ,我得到了:574309
- 对于阿波罗,我得到了:592891
- 对于 Rabbit,我达到了 90k,但伐木很糟糕,尽管我知道有可能,但我不知道该怎么做才能走得更高。
- 对于 Hive,我的试用限制为 1000。等待许可证
- IBM 想用我房子的成本来使用它们——不!