我正在使用Redis 2.4.6稳定版。 我已将文件ae.h中的redis文件描述符的数量增加到200K以上:
#define AE_SETSIZE (1024*200)
但是在运行时我达到了65534的限制。
我在RedHat实例上运行ec2上的redis:2.6.32-220.2.1.el6.x86_64 我正在使用 ulimit -n 200000
运行redis我已经设置了多个ec2节点的测试,试图将并发连接推送到超过150K,但它不会超过65K。
我可以缺少什么想法?可能是内核限制? redis中的错误?
这是redis服务器上的INFO转储:
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
**connected_clients:65534**
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:572810560
used_memory_human:546.27M
used_memory_rss:305123328
used_memory_peak:572810528
used_memory_peak_human:546.27M
mem_fragmentation_ratio:0.53
答案 0 :(得分:4)
您是否违反了网络端口限制?根据客户端关闭连接的方式,您可能只是用完了端口,因为它们会陷入TIME_WAIT状态。
如果是这种情况,解决它的一种方法是将多个内部IP绑定到服务器并相应地分发。或者,如果您可以修改您正在使用的客户端,请确保它以一种承担TIME_WAIT负担的方式关闭连接。