linux - redis是否限制客户端数量为65K?

标签 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 服务器上的信息转储:

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/

相关文章:

c - 尽可能在本地声明变量

c - 内存映射内核空间的解剖结构

linux - 用于验证 root pw 的 Shell 脚本

linux - 如何在 If else 情况下使用 shell 逻辑运算符

java - 编译带有嵌套子类的 Java 类突然不起作用, "access denied"

c++ - 是否存在堆分配对象的永不为空的唯一所有者?

google-app-engine - Appengine网站的架构指南?

c - 使用列表在内核设备中存储值

linux - 在调用 NASM 中的函数之前,%rsp 是否应该与 16 字节边界对齐?

c# - 架构问题 : use of dependency injection resulting in rubbish API