Sentinel LeapArray#currentWindow resetWindowTo 是否需要double check?

kh212irz  于 2022-10-19  发布在  其他
关注(0)|答案(5)|浏览(129)

描述

个人理解,会不会多个线程同时满足 windowStart > old.windowStart(),并且一个线程先获取了锁,执行完了 resetWindowTo 并释放锁。此时另一个线程又获得了锁,又执行了一次 resetWindowTo

版本

1.8.0 并且看了下master分支代码也是这样的

pgccezyw

pgccezyw1#

我们在使用的过程中定位了一个问题,我们有一个应用也没多少QPS,但在某种情况下CPU被耗尽了,用火焰图工具发现全部都在Thread.yield()这里。(但被触发监控到的次数不多,但让使用者很不爽,说是Sentinel影响到了他们系统就不用了)
但神奇的是很多系统的QPS都很大,但是没有发现这种问题。
期望作者能讨论一下这个类的实现,是否在多线程竞争的情况下有某个点导致的。

dffbzjpn

dffbzjpn2#

@cookiejoo 帮忙补一下相关的火焰图或其它性能数据,上面的图没有传上来

5rgfhyps

5rgfhyps5#

@cookiejoo 你好,我们现在也遇到了这个cpu冲高的问题,对于这个问题你们有定位原因或者解决方案吗

相关问题