我使用的是 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 服务器上的信息转储:
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 绑定(bind)到服务器并进行相应的分发。或者,如果您可以修改正在使用的客户端,请确保它以承担 TIME_WAIT 负担的方式关闭连接。
关于linux - redis是否限制客户端数量为65K?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971325/