1

我正在测试 ServiceStack Redis 客户端,但遇到了与 Windows Server 2003 R2 中的包大小相关的错误。

对于小于 30MB 的文件可以正常工作,但对于大于 32-33MB 的文件,它开始发送错误。而且它只发生在 Windows Server 2003 R2 中,我在 Windows 7 和 Windows 2008 R2 上测试成功。

编码:

String text = File.ReadAllText("file.xml");
String key = Guid.NewGuid().ToString();            
if (redisClient.Add(key, text, DateTime.Now.AddSeconds(300)))
    String Result = redisClient.Get<object>(key) as String;

错误:

System.Net.Sockets.SocketException (0x80004005): An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

有谁知道这是因为操作系统限制还是 Redis 的 ServiceStack 客户端有问题。

提前致谢。

4

1 回答 1

1

我也遇到了这个问题。虽然我确实在网上看到了与更改 TCP 窗口大小等相关的解决方案,但我只是压缩了所有内容。这并非在所有情况下都有效(特别是如果内容已经压缩!),但如果压缩是一种选择,我会尝试。

于 2014-03-10T19:27:05.617 回答