我正在使用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节点的testing,试图推动并发连接超过150K,但不会超过65K。
任何想法,我可以错过什么? 也许是内核限制? bug在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
你遇到网络端口限制吗? 根据客户端关闭连接的方式,您可能只是用尽了端口,因为它们将处于TIME_WAIT状态。
如果是这样的话,解决这个问题的一种方法是将多个内部IP绑定到服务器并相应地分配。 或者,如果您可以修改正在使用的客户端,请确保它关闭连接,使其承担TIME_WAIT的负担。