im using redis with servicestack.
i get client with this code :
public RedisClient GetClient()
{
RedisManagerPool redisManager = new RedisManagerPool();
RedisClient client = (RedisClient)redisManager.GetClient();
client.Db = AppConst.RedisServer;
return client;
}
everything go fine but suddenly my clients grown up and i get some errors and look like redis-server proccess down, make me restart server :
max number of clients reached
Could not resolve master instance within 10000ms RetryTimeout
and i set maxclient more value but still get this error but max number of.... replaced with localhost:6379
stacktrace :
at ServiceStack.Redis.RedisResolver.CreateRedisClient(RedisEndpoint config, Boolean master) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.Redis/src/ServiceStack.Redis/RedisResolver.cs:line 110 at ServiceStack.Redis.RedisManagerPool.GetClient(Boolean forAsync) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.Redis/src/ServiceStack.Redis/RedisManagerPool.cs:line 222
at ServiceStack.Redis.RedisNativeClient.AssertConnectedSocket() in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.Redis/src/ServiceStack.Redis/RedisNativeClient_Utils.cs:line 292 at ServiceStack.Redis.RedisNativeClient.AssertServerVersionNumber() in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.Redis/src/ServiceStack.Redis/RedisNativeClient_Utils.cs:line 56 at ServiceStack.Redis.RedisClient.GetServerRole() in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.Redis/src/ServiceStack.Redis/RedisClient.cs:line 1119 at ServiceStack.Redis.RedisResolver.GetValidMaster(RedisClient client, RedisEndpoint config) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.Redis/src/ServiceStack.Redis/RedisResolver.cs:line 118 at ServiceStack.Redis.RedisResolver.CreateRedisClient(RedisEndpoint config, Boolean master) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.Redis/src/ServiceStack.Redis/RedisResolver.cs:line 96
i search many times and i try some ways like set maxclients or maxpoolsize even UseIpRateLimiting and... but dont work.
1条答案
按热度按时间q7solyqu1#
您错误地使用了
RedisManagerPool
,所有的Redis客户端管理器都需要注册为一个单独的示例或者维护在一个静态变量中,这样所有的客户端示例都可以从同一个池中解析。如果您没有使用IOC,请维护
RedisManagerPool
的静态示例,例如: