我在一台机器上做基本的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
答案 0 :(得分:5)
qfork文件是MSOpenTech通过mempry-mapped文件为Windows端口模拟Linux forks的方式。您可以通过在conf文件中设置maxheap设置来控制大小。
答案 1 :(得分:2)
Check here。寻找标题"输出缓冲区限制",我认为这将使您走向正确的方向
从2.6.9开始,可以使用CONFIG SET
设置以下内容客户端 - 输出 - 缓冲限