即使增加超时后,stackexchange.redis 也会抛出超时?

2024-03-30

尝试从缓存中删除时出现以下错误:

Timeout performing DEL test.com, inst: 0, mgr: ExecuteSelect, err: never, queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, clientName: ORLWS052, serverEndpoint: Unspecified/pub-redis-16778.us-west-2-1.1.ec2.garantiadata.com:16778, keyHashSlot: 6928, IOCP: (Busy=3,Free=997,Min=4,Max=1000), WORKER: (Busy=4,Free=4091,Min=4,Max=4095), Local-CPU: 100% (Please take a look at this article for some common client-side issues that can cause timeouts: https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs/Timeouts.md)

更新时我也遇到类似的超时。

我不知道如何阅读这篇文章,所以如果有人知道的话会很有帮助。

我尝试更新或删除的密钥的大小是 5515 字节。

我也跑了slowlog get命令,没有(长度为0)

我也尝试过增加超时时间,但这也不起作用


IOCP: (Busy=3,Free=997,Min=4,Max=1000), WORKER: (Busy=4,Free=4091,Min=4,Max=4095), Local-CPU: 100%

请检查您的 ICOP、WORKER 繁忙线程和最小线程。 CPU 利用率也为 100%。 timeoutHelpLink 在最新版本中进行了更新。

https://stackexchange.github.io/StackExchange.Redis/Timeouts https://stackexchange.github.io/StackExchange.Redis/Timeouts

如果我们查看来自 StackExchange.Redis 的示例错误消息(构建 1.0.450 或更高版本),您将看到它现在打印 ThreadPool 统计信息(请参阅下面的 IOCP 和 WORKER 详细信息)。

System.TimeoutException: Timeout performing GET MyKey, inst: 2, mgr: Inactive, queue: 6, qu: 0, qs: 6, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, IOCP: (Busy=6,Free=994,Min=4,Max=1000), WORKER: (Busy=3,Free=997,Min=4,Max=1000)

在上面的示例中,您可以看到对于 IOCP 线程有 6 个 繁忙的线程,并且系统配置为允许最少 4 个线程。 在这种情况下,客户端可能会看到两次 500 毫秒的延迟 因为 6 > 4。

请注意,如果任一数据增长,StackExchange.Redis 可能会超时 IOCP 或 WORKER 线程受到限制。

建议:鉴于上述信息,建议设置 IOCP 和 WORKER 线程的最小配置值 大于默认值。我们无法提供一刀切的方案 关于这个值应该是什么的指导,因为一个人的正确值 应用程序对于另一个应用程序来说太高/太低。这个设置 也会影响复杂的其他部分的性能 应用程序,因此您需要根据您的具体情况微调此设置 需要。一个好的起点是 200 或 300,然后进行测试和调整 需要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使增加超时后,stackexchange.redis 也会抛出超时? 的相关文章

随机推荐