Issue Description
Type: bug report or feature request
Describe what happened (or what feature you want)
SphU.asyncEntry 接口无法block
Describe what you expected to happen
我写了个服务接口,delay 1秒
使用如下的方法测试,资源设置50ms超时,时间窗口2秒
日志显示
没有请求block,所有请求都成功到达后端
How to reproduce it (as minimally and precisely as possible)
- 写一个缓慢的服务端,我采用delay 1秒模拟
- 使用webflux webclient 请求服务,订阅里close AsyncEntry
- 循环调用多次,我测试是调用100次
Tell us your environment
jdk 14, kotlin 1.3.71, win 10 64 bit
20条答案
按热度按时间vqlkdk9b1#
你接口的延时时间太长了,你试试60ms,并且你每个请求间sleep 5ms 试试。
ruoxqz4g2#
1秒的接口延时应该还算合理,我在调用处加了sleep依然没有block住
bn31dyow3#
参考文档看看是否满足触发条件:https://github.com/alibaba/Sentinel/wiki/熔断降级
1.8.0 版本会对 RT 模式进行改进
tvz2xvvm4#
我觉得使用thread local的方式有问题,使用协程,多个方法可能走到同一个线程
q5iwbnjs5#
同样配置异步的不触发熔断,所有请求都会发送到后端,同步请求触发熔断,所以应该不是配置的问题,我的配置如下
resource: zlw-get-user-pig-factory-list-api
count: 100.0
timeWindow: 2
a64a0gku6#
kotlin和reactor都有一套context,spring 通过判断类型来决定使用同步的thread local或者使用异步的XXXContext
https://spring.io/blog/2019/05/16/reactive-transactions-with-spring
bjg7j2ky7#
可以先提供一个版本的么,同步的或异步的都行,可以手工传入context
目前同步可以熔断,但是因为协程thread local出问题,导致一直狂刷错误日志
异步目前根本不能熔断
gev0vcfq8#
有什么问题 错误 具体描述下。
von4xj4u9#
目前使用kotlin协程,同步方法一直报错
7fyelxc510#
异步版本的上面有描述,不会触发
bmp9r5qi11#
可否给个 demo 工程,社区来复现下
jv2fixgn12#
好的,我等下把项目地址写在下面
az31mfrm13#
我的测试工程地址在https://github.com/cjdxhjj/sentinel-demo.git
quhf5bfb14#
测试前先把web跑起来,bootRun
然后执行测试,一共写了5个测试,每个测试熔断策略都一致,分别跑500次
测试1,2使用sentinel同步api
测试3,4,5使用异步api
测试 1调用了三个接口,2个接口使用withContext异步调用,一个接口异步调用,出现少量熔断,大部分请求都通过,出现部分下列错误
z4bn682m15#
测试2 删除了第三个请求,二个请求在withContext里异步执行, 绝大多数请求都被熔断了