redis是否将客户端数限制为65K?

时间:2012-01-23 12:06:58

标签: linux architecture linux-kernel redis nonblocking

我正在使用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 

1 个答案:

答案 0 :(得分:4)

您是否违反了网络端口限制?根据客户端关闭连接的方式,您可能只是用完了端口,因为它们会陷入TIME_WAIT状态。

如果是这种情况,解决它的一种方法是将多个内部IP绑定到服务器并相应地分发。或者,如果您可以修改您正在使用的客户端,请确保它以一种承担TIME_WAIT负担的方式关闭连接。