2016-08-12 138 views
2

我正在使用Hystrix包装我的服务调用(99百分位的呼叫是〜200毫秒)。我椎配置看起来像
Hystrix性能开销

- 核心尺寸:80
- executiontimeoutinMilliSeconds:600个
- metricsRollingStatisticalWindowInMilliseconds:10000
- metricsRollingStatisticalWindowBuckets:10
(其余全部是默认的)

有一直在我的应用程序中观察到奇怪的行为(间歇性地)。大多数情况下,服务调用似乎没有任何hystrix超时正常工作(只有几个电话在一个小时左右超时)。
偶尔,hystrix超时做增加许多倍
在分析原因,我能得到保持的唯一的事情是,我执行延时在红椎(潜伏期为我的实际业务逻辑,在我HystrixCommand的run方法内)比多muchless总延迟(hystrix从命令中调用execute()到获得实际响应的总时间)。

问:
1.为什么会出现如此巨大的差异我的执行和总延迟(执行比总延迟小得多)。造成这种开销的可能原因是什么? (PS:我的服务器上的qps几乎不是10)
2.是否有与此开销相关的文档?我怎样才能找出这里的实际瓶颈?

任何线索将不胜感激。

回答

2

我们面对完全一样的问题,这是通过移动到1.5.x的

从竞标解决 - https://github.com/Netflix/Hystrix/releases/tag/v1.5.0

桶滚,现在通过的Rx后台线程,而不是倒霉猬命令线程发生。这使得命令性能更具可预测性。现在用户线程延迟实际上与命令延迟无法区分。