3

我在一台机器上进行基本的发布/订阅,我的客户端是 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

4

2 回答 2

5

qfork 文件是 MSOpenTech 通过内存映射文件模拟 Windows 端口的 Linux 分叉的方式。您可以通过在 conf 文件中设置 maxheap 设置来控制大小。

于 2014-05-23T13:08:59.180 回答
2

在 Redis 的文档中查看此处。寻找标题“输出缓冲区限制”,我认为这会让你朝着正确的方向前进

从 2.6.9 开始,可以使用 CONFIG SET 设置以下内容

客户端输出缓冲区限制

于 2014-05-23T09:50:03.020 回答