2016-08-12 140 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後臺線程,而不是倒黴蝟命令線程發生。這使得命令性能更具可預測性。現在用戶線程延遲實際上與命令延遲無法區分。