我在 servicestack API 中使用 ServiceStack.Redis 池化客户端,经过几个小时大约 3000rpm 的流量后,我从池管理器收到连接超时异常。实现如下:
在 AppStart 中:
container.Register<IRedisClientsManager>(
p => new RedisManagerPool(Configuration.Config.Instance.RedisConfig.Server)
{
MaxPoolSize = 10000,
PoolTimeoutMs = 2000
}).ReusedWithin(ReuseScope.Container);
在服务中:
Pool = (RedisManagerPool) GetResolver().TryResolve<IRedisClientsManager>();
RedisClient = (RedisClient)Pool.GetClient();
....
RedisClient.Dispose();
我还尝试使用 Pool.DisposeClient(RedisClient) 处理客户端,以便将客户端返回到池中,但我看到了相同的结果。
我还检查了 Redis 服务器,但在 cpu 使用、内存使用、0 拒绝连接等方面没有问题。
如果有人遇到这种情况,你能告诉我吗?
谢谢