Redis的连接器/缓冲器大小超过限制(Redis connection/buffer-size l

2019-08-07 04:12发布

尽管压力测试我们的应用服务器,我们得到了Redis的以下异常:

ServiceStack.Redis.RedisException: 无法连接在redis的主机到Redis的实例:6379 ---> System.Net.Sockets.SocketException:无法因为系统缺少足够的缓冲区空间或执行套接字上的操作因为队列充满redis的主机:6379在System.Net.Sockets.Socket.Connect(ip地址[]的地址,端口的Int32)在System.Net.Sockets.Socket.Connect(字符串主机的Int32端口)在ServiceStack.Redis.RedisNativeClient。连接()---内部异常堆栈跟踪的末尾在ServiceStack.Redis.RedisNativeClient.Connect()在ServiceStack.Redis.RedisNativeClient.AssertConnectedSocket()在ServiceStack.Redis.RedisNativeClient.SendCommand(字节[] [] cmdWithBinaryArgs )在ServiceStack.Redis.RedisNativeClient.SendExpectData(字节[] [] cmdWithBinaryArgs)在ServiceStack.Redis.RedisClient.GetValueFromHash(字符串hashId,String键)在ServiceStack.Redis.Generic.RedisTypedClient 1.GetValueFromHash[TKey](IRedisHash 2散列,TKEY的键)

它似乎有连接限制超过Redis的主机端口上。 任何想法如何提高通过Redis.conf或服务器配置这道门槛? 我们已经接待了Ubuntu的服务器Redis的实例。

Answer 1:

我是能够重复使用ServiceStack超出缓冲区大小限制了同样的问题。 做压力测试的代码是在这里 - 运行应用程序的20个实例进行至少20分钟。 https://github.com/ServiceStack/ServiceStack.Redis/commit/b01582f9c873f375794c04d46aad400590ca5bf3

您可能会看到的第一个错误是“无法连接到Redis的实例”如所描述的Redis无法在繁忙的负载连接 ,但如果展开你看“,因为系统缺乏足够的无法执行套接字上的操作的内部异常缓冲空间或者因为队列已满”

我的问题发生在Window7的,但不是窗口Server 2008的RC。 于是,我开始看,如果它是一个操作系统的问题。 在ServiceStack电子邮件杰米斯后,得出的结论是ServiceStack正确关闭插座。 望着OS,这个问题是固定设置TcpTimeWaitDelay和MaxUserPort的。

更多的引用。 TcpTimeWaitDelay 45秒

和MaxUserPort的http://mashijie.blogspot.com/2009/05/change-default-setting-of-tcp-ports.html

我调整了端口范围1025-64511



文章来源: Redis connection/buffer-size limit exceeded
标签: redis