Reputation: 67
.Net core 2.1 web-api uses below redis nuget package "StackExchange.Redis" Version="2.1.55" and connects to Azure Redis P1 tier, Redis version 4.0.14
On appsettings.config,
"RedisConfiguration": { "ConnectionString": "mycache.redis.cache.windows.net:6380,password=$$$$$$$$$F543shkerXXXXXg=,ssl=True,abortConnect=False", "DatabaseNumber": 1 }
While performing load test,
Receiving below exception very frequently especially when maintaining 50requests/sec. Our application deployed on Azure service fabric cluster with 3 nodes. No processor/memory pressure observed on any of the server nodes.
Message":"Redis exception while setting the value to cache: An unknown error occurred when writing the message","Level":"Error","ExceptionType":"StackExchange.Redis.RedisConnectionException
"Message":"Redis exception while getting the value from cache: An unknown error occurred when writing the message","Level":"Error","ExceptionType":"StackExchange.Redis.RedisConnectionException" Complete stack trace for your reference:
"StackTrace":" at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor1 processor, ServerEndPoint server) in //src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2800\r\n at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor1 processor, ServerEndPoint server) in //src/StackExchange.Redis/RedisBase.cs:line 54\r\n at MyApplication.RedisCacheAdapter.<>c__DisplayClass21_1.b__0() in M:\work2\7ae5cc7915b5f803\MyApplication\RedisCacheAdapter.cs:line 199\r\n at Polly.Policy.<>c__DisplayClass144_0.b__0(Context ctx, CancellationToken ct)\r\n at Polly.RetrySyntax.<>c__DisplayClass5_1.b__1(Context ctx, CancellationToken ct)\r\n at Polly.Retry.RetryEngine.Implementation[TResult](Func3 action, Context context, CancellationToken cancellationToken, IEnumerable1 shouldRetryExceptionPredicates, IEnumerable1 shouldRetryResultPredicates, Func1 policyStateFactory)\r\n at Polly.RetrySyntax.<>c__DisplayClass5_0.b__0(Action2 action, Context context, CancellationToken cancellationToken)\r\n at Polly.Policy.ExecuteInternal(Action2 action, Context context, CancellationToken cancellationToken)\r\n at Polly.Policy.Execute(Action2 action, Context context, CancellationToken cancellationToken)\r\n at MyApplication.RedisCacheAdapter.Put(String key, Byte[] bytes, TimeSpan expirytime) in M:\work2\7ae5cc7915b5f803\MyApplication\RedisCacheAdapter.cs:line 196","Exception":"An unknown error occurred when writing the message","LoggerName":"MyApplication.RedisCacheAdapter","Message":"Redis exception while setting the value to cache: An unknown error occurred when writing the message","Level":"Error","ExceptionType":"StackExchange.Redis.RedisConnectionException"`
What would be reason for such error & how to fix this "StackExchange.Redis.RedisConnectionException"? Any change in redis connection string properties or redis version update would be useful?
Sometimes, below exception timeout exception as well when maintaining 50requests/sec on 3 nodes cluster
"Message":"Redis Timeout exception occurred.
Upvotes: 0
Views: 2042
Reputation: 46
You could put 'syncTimeout' parameter in ConnectionString like this
"RedisConfiguration": {"ConnectionString": "mycache.redis.cache.windows.net:6380,password=$$$$$$$$$F543shkerXXXXXg=,ssl=True,abortConnect=False,**syncTimeout=150000** "," DatabaseNumber ": 1}.
This parameter sets the "Time (ms) to allow synchronous operations", as can be seen at https://stackexchange.github.io/StackExchange.Redis/Configuration.html.
I had this problem when I stored items that took more than 5 seconds to be processed, since this is the default value. You can try increasing this value using the parameter inserted in the connection string. I hope I can help you with this, regards.
Upvotes: 2
Reputation: 65391
It could be a problem with serializing and/or deserializering of cache items.
The first thing to do would be to check if it is allways the same cache items that fail. If that is the case what is special about these items.
Upvotes: 0