Redis Server失败,Socket失败,超出输出缓冲区限制,如何增加限制?

时间:2014-05-23 09:43:42

标签: c# redis stackexchange.redis

我在一台机器上做基本的pub / sub,我的客户端是StackExchange-Redis的C#客户端,我在同一台机器上运行基于Windows的Redis服务器(服务器版本2.8.4)

当我发布大量数据(略大于32mb)时,我收到以下错误消息。我不确定错误是源自客户端还是由服务器引发。显然超出了“输出缓冲区限制”。我怎样才能增加限额?我需要偶尔发送这种有效载荷的数据(虽然这是例外而不是常态)。

我不确定这是否相关但每次启动我的服务器时都会打开/生成一个大小约为32gb的文件(???),文件名为“RedisQFork_3564.dat”。这个文件用的是什么?这一切都与我的问题有关吗?

服务器上的错误消息

[10144] 23 May 17:37:29.293 # Client addr=127.0.0.1:47943 fd=9 name=DESKTOP-PC a ge=20 idle=13 flags=N db=0 sub=7 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=88 oll=1 omem=108527608 events=rw cmd=subscribe scheduled to be closed ASAP for overcomi ng of output buffer limits. [10144] 23 May 17:37:38.802 # Client addr=127.0.0.1:47948 fd=10 name=DESKTOP-PC age=9 idle=9 flags=N db=0 sub=7 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=88 oll=1 omem=109314040 events=rw cmd=subscribe scheduled to be closed ASAP for overcomin g of output buffer limits.

客户端上的错误消息

Message: Connection to Redis Server failed: SocketFailure on 127.0.0.1:6379/ Subscription, input-buffer: 4583028, outstanding: 0, last-read: 0s ago, last-wri te: 8s ago, keep-alive: 60s, pending: 0, state: ConnectedEstablished, last-heart beat: 0s ago, last-mbeat: 0s ago, global: 0s ago

2 个答案:

答案 0 :(得分:5)

qfork文件是MSOpenTech通过mempry-mapped文件为Windows端口模拟Linux forks的方式。您可以通过在conf文件中设置maxheap设置来控制大小。

答案 1 :(得分:2)

来自Redis的文档

Check here。寻找标题"输出缓冲区限制",我认为这将使您走向正确的方向

从2.6.9开始,可以使用CONFIG SET

设置以下内容

客户端 - 输出 - 缓冲限