1抡柿、如果hystrix.command.default.execution.timeout.enabled為true,則會(huì)有兩個(gè)執(zhí)行方法超時(shí)的配置,一個(gè)就是ribbon的ReadTimeout,一個(gè)就是熔斷器hystrix的timeoutInMilliseconds, 此時(shí)誰(shuí)的值小誰(shuí)生效
2舔琅、如果hystrix.command.default.execution.timeout.enabled為false,則熔斷器不進(jìn)行超時(shí)熔斷,而是根據(jù)ribbon的ReadTimeout拋出的異常而熔斷,也就是取決于ribbon
ribbon的ConnectTimeout,配置的是請(qǐng)求服務(wù)的超時(shí)時(shí)間,除非服務(wù)找不到,或者網(wǎng)絡(luò)原因,這個(gè)時(shí)間才會(huì)生效
4、OkToRetryOnAllOperations
這個(gè)參數(shù)指的是是否允許所有的HTTP請(qǐng)求(GET,POST,PUT等)重試洲劣。默認(rèn)值是false备蚓,只允許GET請(qǐng)求重試。對(duì)于POST等請(qǐng)求囱稽,請(qǐng)慎重使用郊尝。
5、MaxAutoRetries
這個(gè)參數(shù)用于配置當(dāng)前實(shí)例最大重試次數(shù)战惊,默認(rèn)值為0流昏。重試次數(shù)不包括第一次請(qǐng)求。
MaxAutoRetriesNextServer
這個(gè)參數(shù)指的是切換實(shí)例最大重試次數(shù),默認(rèn)值1况凉。
如果訪問(wèn)當(dāng)前實(shí)例異常谚鄙,會(huì)再次嘗試訪問(wèn)當(dāng)前實(shí)例(次數(shù)由MaxAutoRetries決定);如果還不行刁绒,就會(huì)訪問(wèn)下一個(gè)實(shí)例闷营;如果仍然不行,會(huì)把下一個(gè)實(shí)例作為當(dāng)前實(shí)例并重試(次數(shù)由MaxAutoRetries決定)...依此類推知市,直到切換實(shí)例次數(shù)達(dá)到上限(由MaxAutoRetriesNextServer決定)為了確保重試機(jī)制的正常運(yùn)作,理論上(以實(shí)際情況為準(zhǔn))建議hystrix的超時(shí)時(shí)間為:(1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout
https://blog.csdn.net/zzzgd_666/article/details/83314833
ribbon:
OkToRetryOnAllOperations: false #對(duì)所有操作請(qǐng)求都進(jìn)行重試,默認(rèn)false
ReadTimeout: 10000 #負(fù)載均衡超時(shí)時(shí)間傻盟,默認(rèn)值5000
ConnectTimeout: 2000 #ribbon請(qǐng)求連接的超時(shí)時(shí)間,默認(rèn)值2000
MaxAutoRetries: 0 #對(duì)當(dāng)前實(shí)例的重試次數(shù)嫂丙,默認(rèn)0
MaxAutoRetriesNextServer: 1 #對(duì)切換實(shí)例的重試次數(shù)娘赴,默認(rèn)1
hystrix:
command:
default: #default全局有效,service id指定應(yīng)用有效
execution:
timeout:
enabled: true
isolation:
thread:
timeoutInMilliseconds: 20000 #斷路器超時(shí)時(shí)間跟啤,默認(rèn)1000ms