【问题标题】:Is redis limiting the number of clients to 65K?redis 是否将客户端数量限制为 65K?
【发布时间】:2012-02-16 18:49:25
【问题描述】:

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

【问题讨论】:

  • 嗨,David,一旦达到 65k 限制,dmesg 或 /var/log 中的任何内容是否会显示任何内容?

标签: linux architecture linux-kernel redis nonblocking


【解决方案1】:

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

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

【讨论】:

  • 可能是这样。我会看看那个。不幸的是,我需要我的客户保持这些连接打开。
  • 已修复。这是一个与操作系统网络相关的参数 (/proc/sys/net/nf_conntrack_max)。 Redis 现在几乎可以处理我扔给它的任何东西。
  • +1 @DavidCostaFaidella 你应该接受这个答案,因为它解决了你的问题
猜你喜欢
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-13
  • 2017-05-23
  • 1970-01-01
  • 2015-05-26
相关资源
最近更新 更多