サービススタック 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 使用率、メモリ使用率、接続の拒否などに問題はありませんでした。
誰かがこれに遭遇した場合はお知らせください。
ありがとうございました