c# - RedisDB尝试执行flushdb时抛出超时异常
问题描述
StackExchange.Redis 有问题。在我们的过程中,我们有两个 redis 数据库。这些数据库用于存储用户可以执行查找的类似信息,因此我们在导入时在它们之间切换,以便用户可以持续访问信息。每天大约有 50000000 条记录被插入到一个数据库中,并从另一个数据库中删除旧记录,为第二天的导入做准备。记录以 100000 条记录为一组导入。我们面临的问题是,数据导入完成后,Redis 抛出异常,同时尝试执行 flushdb 命令。
StackExchange.Redis.RedisTimeoutException Timeout awaiting response (outbound=0KiB, inbound=0KiB, 5976ms elapsed, timeout is 5000ms), command=UNKNOWN, next: SELECT, inst: 0, qu: 0, qs: 2, aw: False, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: 127.0.0.1:6379, mgr: 10 of 10 available, clientName: MX-ENUM-VM, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=3,Free=32764,Min=2,Max=32767), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts) at Project.Synchronizer.Service.RedisHelper.FlushDb(Int32 dbIndex)
at Project.Synchronizer.Service.RedisHelper.SelectAndClearRedisDbForNumberUpload()
at Project.Synchronizer.Service.RedisHelper.UploadNumbers()
at Project.Synchronizer.Service.DataUploadService.UploadNumbersToRedis() StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 5976ms elapsed, timeout is 5000ms), command=UNKNOWN, next: SELECT, inst: 0, qu: 0, qs: 2, aw: False, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: 127.0.0.1:6379, mgr: 10 of 10 available, clientName: CLIENT-ENUM-VM, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=3,Free=32764,Min=2,Max=32767), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)
at Project.Synchronizer.Service.RedisHelper.FlushDb(Int32 dbIndex)
at Project.Synchronizer.Service.RedisHelper.SelectAndClearRedisDbForNumberUpload()
at Project.Synchronizer.Service.RedisHelper.UploadNumbers()
at Project.Synchronizer.Service.DataUploadService.UploadNumbersToRedis()
我尝试执行此命令的方式是
private async Task FlushDb(int dbIndex)
{
await getDB(dbIndex).ExecuteAsync("flushdb");
}
任何形式的帮助将不胜感激,因为我已经坚持了很长一段时间。作为记录,我试图在这里得到一些答案,但无法弄清楚https://stackexchange.github.io/StackExchange.Redis/Timeouts.html
解决方案
好吧,似乎我以某种方式设法解决了这个问题,但还没有深入研究导致它的原因。长话短说增加syncTimeout
似乎有所帮助,并且不再抛出异常。这个线程在我的情况下很有帮助stackexchange.redis 即使在增加超时后也会抛出超时?
推荐阅读
- python - 有没有办法使用 Python(openpyxl)复制合并的单元格?
- javascript - 如何将不同文件中的多个类包装成打字稿中的单个函数
- python - 在 Mac 上使用“pipenv install”失败,出现“没有这样的文件或目录”错误
- c++ - 何时在类模板中实例化函数模板?
- c# - c# linq 基于给定列表进行过滤
- excel - 如何将文件附加到消息?
- python - 在 Python 中获取整数的第一个数字的最有效方法是什么?
- node.js - 将产品推送到购物车时出错。TypeError:无法读取未定义的属性“推送”
- javascript - findIndex 不是函数
- python - Dask 数据帧大于内存