在redis中创建和读取键并获取超时错误

l2osamch  于 2021-06-08  发布在  Redis
关注(0)|答案(0)|浏览(395)

场景:我们有一个windows服务,它是一个任务调度器。它管理一个任务列表,并安排它在给定的时间或按需求运行。对于示例,当web应用程序需要处理比http支持花费更多时间的事情时,我们只需将其推入任务调度器,它就可以在windows服务上运行。
为了存储所有信息,我们使用redis,并将一个json格式的集合存储在一个名为 _TS_Tasks . windows服务启动一个循环并不断检查这个键,以查看是否有任何任务要处理并运行它(从缓存列表中删除)。在执行任务的过程中,我们使用publish/subscribe将进度和日志(这也是一个键中的json列表,有时可能很大)发送到web应用程序(windows服务在一个通道中发布,web应用程序在同一个通道中订阅)。它似乎工作得很好。
问题是:windows服务运行在一个虚拟机(可能是azure,aws甚至是一些客户的内部部署)和aws/azure缓存服务中!我们不知道我们做错了什么,得到下面的超时错误。这是我们无法模拟的非常间歇性的错误。
我注意到机器有时会得到80%的内存或cpu,但它不是一个常数,它只是需要一些时间和稳定。我们已经阅读了这篇文章,现在我们确实了解了正在发生的事情。
我是否可以在代码或环境中检查一些东西来修复它?
谢谢您

RedisTimeoutException: Timeout performing EXISTS _TS_Tasks, inst: 1, mgr: ProcessReadQueue, err: never, 
queue: 4, qu: 0, qs: 4, qc: 0, wr: 0, wq: 0, in: 22, ar: 1, clientName: WTERAWSSRV022, serverEndpoint: 
Unspecified/localhost:6379, keyHashSlot: 13871, IOCP: (Busy=0,Free=1000,Min=4,Max=1000), 
WORKER: (Busy=0,Free=2047,Min=4,Max=2047) (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts).

StackTrace RedisTimeoutException:    at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server)
   at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server)
   at StackExchange.Redis.RedisDatabase.KeyExists(RedisKey key, CommandFlags flags)
....

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题