sas*_*alm 3 timeoutexception redis
此错误中的“bw:SpinningDown”是什么意思 -
执行 GET 超时(5000 毫秒),下一步:GET foo!bar!baz,inst:5,qu:0,qs:0,aw:False,bw:SpinningDown,...
这是否意味着 Redis 服务器实例正在停止运行,或者其他原因?
它实际上意味着别的东西。缩写 bw 代表 Backlog-Writer,其中包含 Redis 中积压工作的状态。
对于这个特定的状态:SpinningDown,您实际上遗漏了与其相关的重要部分。
正在跟踪的工作人员有 4 个值:忙碌、空闲、最小和最大。让我们采用这些假设值:Busy=250,Free=750,Min=200,Max=1000
在这种情况下,现有(繁忙)线程比最小值多 50 个。
启动新线程的成本很高,特别是当您达到 .NET 提供的全局线程池限制时。在这种情况下,由于限制,每 500 毫秒仅创建 1 个新线程。
因此,一旦 Backlog 处理完某个项目,它不会只是退出线程,而是将其保持在等待状态 (SpinningDown) 5 秒。如果在此期间仍有更多 Backlog 需要处理,同一线程将处理 Backlog 中的另一个项目。
如果这 5 秒内不需要处理 Backlog 项目,则线程将退出,这最终将导致 Busy(现有)线程减少。
当然,这只发生在超过最小计数的线程上,因为即使没有工作要做,这些线程也会保持活动状态。
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |