Spring Cloud Hystrix: 控制stream推送频率
2017-04-26 14:51
579 查看
问题表现
在引入spring-boot-starter-actuator依赖后,Spring Boot应用会暴露出
/hystrix.stream端点以供监控工具读取该应用的Hystrix Metrics数据。但是默认情况下,该Endpoint每间500ms就会向建立连接的客户端发送metrics数据,频率太高了,浪费CPU和带宽资源。在Hystrix Dashboard主页中虽然有让你输入delay的输入框,如下图:
但是该参数根本不起作用!
查找原因
经过抓包,发现在设置delay参数后,实际向应用发的请求是http://localhost:9000/hystrix.stream?delay=2000
我们通过curl发送同样的请求,发现delay参数确实被无视了,应用依然每隔500ms就向我们推送一次断路器数据。通过查阅源码,我发现控制该行为的地方在
HystrixDashboardStream类中:
public class HystrixDashboardStream { final int delayInMs; private static final DynamicIntProperty dataEmissionIntervalInMs = DynamicPropertyFactory.getInstance().getIntProperty("hystrix.stream.dashboard.intervalInMilliseconds", 500); // 就是这里, 通过Archaius来读取配置文件,默认值为500ms }
因为这个类是在应用启动时就进行初始化的,且
dataEmissionIntervalInMs已经被声明成了
private static final,所以这个参数是在应用启动时唯一确定好了,根本无法动态修改!坑!
解决方案
既然无法动态设置,那就直接改成一个大一点的固定值也是可以接受的。在classpath下新建config.properties文件,添加以下配置:
hystrix.stream.dashboard.intervalInMilliseconds=2000
问题解决。
相关文章推荐
- Spring Cloud Hystrix: 控制stream推送频率
- spring-cloud-hystrix之Unable to connect to Command Metric Stream.异常
- spring-cloud-hystrix之Unable to connect to Command Metric Stream.异常
- [翻译]Spring Cloud Stream
- 微服务框架Spring Cloud介绍 Part5: 在微服务系统中使用Hystrix, Hystrix Dashboard与Turbine
- spring cloud: Hystrix断路器(熔断器)
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- spring-cloud-hystrix熔断
- 如何用springcloud找妹纸之7--- 断路在手,天下我有(Hystrix)
- spring cloud stream kafka实例
- Spring Cloud微服务断路由Hystrix与服务网关学习笔记
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- 嗡汤圆的Spring Cloud自学(PART.3):API熔断与监控(hystrix)
- Spring Cloud实战(五)-Spring Cloud Netflix Hystrix
- Spring Cloud Hystrix--熔断器
- SpringCloudNetflix-Feign/Hystrix Setting
- spring cloud stream使用指南
- SpringCloud Hystrix 断路器
- spring cloud-添加Hystrix Dashboard监控到系统中
- SpringCloud关于@FeignClient和Hystrix集成对http线程池监控问题