gpt4 book ai didi

c# - Redis超时异常

转载 作者:行者123 更新时间:2023-12-05 04:54:00 31 4
gpt4 key购买 nike

我每隔几秒就会将一些数据从控制台应用程序推送到 Redis 实例。这就是我的大致做法:

            int foo = GetFoo();
BigObject bar = GetBigObject();

_cache.StringSet("Foo", JsonConvert.SerializeObject(foo));
_cache.StringSet("Bar", JsonConvert.SerializeObject(bar));

但过了一会儿我得到一个异常:

StackExchange.Redis.RedisTimeoutException: 'Timeout performing SETRtSignal-op (5000ms), inst: 0, qu: 0, qs: 0, aw: False, rs:CompletePendingMessage, ws: Idle, in: 0, in-pipe: 5, out-pipe: 0,serverEndpoint: Unspecified/localhost:5002, mgr: 9 of 10 available,clientName: SVGD0083, IOCP: (Busy=0,Free=1000,Min=16,Max=1000),WORKER: (Busy=3,Free=32764,Min=16,Max=32767), v: 2.0.593.37019 (Pleasetake a look at this article for some common client-side issues thatcan cause timeouts:https://stackexchange.github.io/StackExchange.Redis/Timeouts)'

在链接到的页面中,建议问题可能是 Thread Theft 的结果,解决方案是包括以下行:

ConnectionMultiplexer.SetFeatureFlag("preventthreadtheft", true);

问题是 .NET 框架中似乎不存在 SetFeatureFlag 方法。

有什么想法吗?

最佳答案

您的对象的大小是多少?如果 JsonConvert.SerializeObject(foo) 返回一个 500MB 的字符串,那么是的:你将度过糟糕的一天。

此外,服务器还做了什么?这需要在服务器上进行一些挖掘,但是:redis SLOWLOG 命令为您提供有关长时间运行操作的信息。如果有任何事情需要很长时间(我会开始对任何超过 10 毫秒的事情感到紧张),那么你的服务器基本上停止了,这需要进行调查 - 但这不是库可以修复。

如果您正在与远处的服务器通信,您可能需要更长的超时时间。

最后,我非常怀疑这种特殊情况与线程盗窃有关;如果有的话,这听起来像是你在抓救命稻草(比喻)。但是,如果 ConnectionMultiplexer.SetFeatureFlag 不存在,则您可能正在使用旧版本的库。那么:您使用的是什么版本的库?

关于c# - Redis超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65899195/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com