openfeign超時時長設定及詳解
概念明確:
1 hystrix可配置的部分
hystrix.command.default.execution.timeout.enable=true //為false則超時控制有ribbon控制,為true則hystrix超時和ribbon超時都是用,但是誰小誰生效,預設為true
hystrix.command.default.execution.isolation.thread.timeoutinmilliseconds=3000//熔斷器的超時時長預設1秒,最常修改的引數
circuitbreaker.requestvolumethreshold=20 //觸發熔斷的最小請求次數,預設為20
circuitbreaker.sleepwindowinmilliseconds=5000 //休眠時長,預設為5秒
circuitbreaker.errorthresholdpercentage=50 //觸發熔斷的失敗請求最小佔比,預設50%
2 ribbon的可配置部分
ribbon.readtimeout=1000 //處理請求的超時時間,預設為1秒
ribbon.connecttimeout=1000 //連線建立的超時時長,預設1秒
ribbon.maxautoretries=1 //同一臺例項的最大重試次數,但是不包括首次呼叫,預設為1次
ribbon.maxautoretriesnextserver=0 //重試負載均衡其他例項的最大重試次數,不包括首次呼叫,預設為0次
ribbon.oktoretryonalloperations=false //是否對所有操作都重試,預設false
3 feign的可配置部分
feign.hystrix.enabled=false //feign是否啟用斷路器,預設為false
feign.client.config.default.connecttimeout=10000 //feign的連線建立超時時間,預設為10秒
feign.client.config.default.readtimeout=60000 //feign的請求處理超時時間,預設為60
feign.client.config.default.retryer=feign.retryer.default //feign使用預設的超時配置,在該類原始碼中可見,預設單次請求最大時長1秒,重試5次
另外以上各種超時配置,如果都存在,則時間小的配置生效
好的,現在來說feign的超時時長設定:
1 feign的預設配置,是不啟用hystrix,並且feign的底層是呼叫ribbon來實現負載均衡的,所以為了不和ribbon的重試機制衝突因此也不會啟用重試機制
因此配置feign是必須要做的就是
feign.hystrix.enabled=true //開啟feign的hystrix,這樣配置檔案中的hystrix的配置才會生效,否則依然是預設的規則
之後設定hystrix的相關配置才可以在feign中生效,因為feign也呼叫了hystrix
2 ribbon和hystrix的配置
因為hystrix的超時時長,預設為1秒,太短了!因此我們一般一定會設定hystrix的超時時長
在上面啟用了feign的hystrix開關後,配置hystrix超時時長
execution.isolation.thread.timeoutinmilliseconds=10000 //這裡設定了10秒
然後看ribbon的超時設定:
ribbon的超時設定無非2個:處理超時和連線超時,預設為1秒和1秒
但是,ribbon是有預設重試的,也是2個:統一例項的重試次數和負載均衡的不同例項的重試次數,預設為1次和0次
也就是說,在同乙個例項上建立連線如果失敗可以重試1次,處理請求如果失敗可以重試1次,但是不包括首次呼叫,即:實際ribbon的超時時間是 1秒×2+1秒×2,即4秒
之後是,但是上面設定了hystrix超時為10秒,因此ribbon超時優先生效
最後是1個是否對所有操作重試的開關,預設為false,這裡解釋下什麼是所有操作:
即:為false是,get請求不論是連線失敗還是處理失敗都會重試,而對於非get請求只對連線失敗進行重試
因此得出結論,在使用了feign的情況下需先開啟斷路器支援,之後配置hystrix的timeoutinmillisecond大於ribbon的 ( connecttimeout + readtimeout ) × 2即可
也就是說以後以後的配置中常用的配置項就是
1 開啟feign的hystrix開關
2 hystrix超時時長
3 配置ribbon的connecttimeout時長
4 配置ribbon的readtimeout 時長
專案中Zookeeper配置引數筆記
zookeeper是以fast paxos演算法為基礎的,paxos 演算法存在 活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有乙個proposer能提交成功,而fast paxos作了一些優化,通過選舉產生乙個leader 領導者 只有leader才能提交proposer...
make 命令引數筆記
原文 在centos 5下安裝軟體遇到的問題,google了一圈,是因為系統沒有安裝編譯器,那安裝就是了,嘿嘿。解決辦法,在ssh下輸入下面的命令yum y install gcc automake autoconf libtool make b 忽略相容性 b 無條件make所有目標 c dir或...
make 命令引數筆記
b 忽略相容性 b 無條件make所有目標 c dir或者 directory dir 在讀取makefile檔案前,先切換到 dir 目錄下,即把dir當作為當前目錄。如果存在多個 c選項,make的最終當前目錄是第乙個目錄的相對路徑,如 make c home root c src 等價於 ma...