Performance Redis客户端最大限制

Performance Redis客户端最大限制,performance,optimization,redis,Performance,Optimization,Redis,我正在应用程序中使用redis发布/订阅机制,并希望进行基准测试。我有一台I-7机器,内存为32GB,ulimit设置为1024。Redis服务器的配置相同,但ulimit设置为65535。在redis不抱怨MAXClient到达异常的情况下,我可以同时建立多少个连接。我尝试使用连接池等来优化连接,但同时请求的数量似乎没有超过25K个请求 谢谢\ 最大客户端数 在Redis2.4中,有一个关于可以同时处理的最大客户端数的硬编码限制 在Redis 2.6中,此限制是动态的:默认情况下设置为1000

我正在应用程序中使用redis发布/订阅机制,并希望进行基准测试。我有一台I-7机器,内存为32GB,ulimit设置为1024。Redis服务器的配置相同,但ulimit设置为65535。在redis不抱怨MAXClient到达异常的情况下,我可以同时建立多少个连接。我尝试使用连接池等来优化连接,但同时请求的数量似乎没有超过25K个请求

谢谢\

最大客户端数

在Redis2.4中,有一个关于可以同时处理的最大客户端数的硬编码限制

在Redis 2.6中,此限制是动态的:默认情况下设置为10000个客户端,除非Redis.conf中的maxmemory指令另有规定

但是,Redis会与内核一起检查我们能够打开的文件描述符的最大数量。如果限制小于我们想要处理的最大客户机数量,加上32,则会检查软限制,这是Redis为内部使用保留的文件描述符数量,然后Redis修改最大客户机数量,以匹配我们在当前操作系统限制下真正能够处理的客户机数量

当无法遵守配置的最大客户端数时,将在启动时记录该条件,如下例所示:

$./redis服务器-最大客户端100000

[41422] 23 Jan 11:28:33.179 # Unable to set the max number of files limit to 100032 (Invalid argument), setting the max clients configuration to 10112.
当配置Redis以处理特定数量的客户端时,最好确保操作系统也相应地设置了每个进程的最大文件描述符数量限制

在Linux下,这些限制既可以在当前会话中设置,也可以通过以下命令作为系统范围的设置设置:

ulimit-sn100000只有在硬限制足够大的情况下才有效

sysctl-w fs.file max=100000


我不知道酒吧/酒吧间的联系,但我所做的在这里解释,我想这可能会对你有所帮助

我在redis.conf文件中设置了带有27000连接的maxclient属性集

然后我运行redis提供的基准实用程序,使用-c 27000表示27000并行连接。 但这不会直接起作用,因为ulimit-Sn在ubuntu中默认为1024。所以我将-Sn和-Hn改为65535

redis具有客户机-服务器体系结构,因此我们不能从一台计算机上建立太多的客户机连接。因此,我们需要重用连接,并为此执行以下命令 sudo echo 1>/proc/sys/net/ipv4/tcp\u tw\u重用

然后,在我能够使用-c 29000连接运行基准测试util之后。之后,我无法用更多的客户端执行这个util,但我得到的错误是

无法连接到127.0.0.1:7000的Redis:无法分配请求的地址

但是我还没有接触到max connection,所以我用3台单独的计算机运行了相同的基准util,每台计算机有29000个并行客户端,它可以工作并得到执行

奇怪的是,我的redis.conf设置了maxclient 27000,但我仍然能够连接87000个客户端


对我有效的解决方案: 编辑/etc/systemd/system/redis.service 将以下行添加到[服务]部分

LimitNOFILE=110000

我的回答对你有帮助吗?如果没有,请发表评论,否则如果你能接受答案,那将是非常棒的:它有部分帮助。谢谢但并没有解决我的问题。