Hystrix全部的配置都是hystrix.command.[HystrixCommandKey]
开头,其中[HystrixCommandKey]
是可变的,默认是default
,即hystrix.command.default
;另外Hystrix内置了默认参数,若是没有配置Hystrix属性,默认参数就会被设置,其优先级:后端
XXX
XXX
execution.isolation.strategy= THREAD|SEMAPHORE服务器
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
用来设置thread和semaphore两种隔离策略的超时时间,默认值是1000。并发
hystrix.command.[CommandKey].execution.isolation.thread.timeoutInMilliseconds
这个超时时间要根据CommandKey
所对应的业务和服务器所能承受的负载来设置,要根据CommandKey
业务的平均响应时间设置,通常是大于平均响应时间的20%~100%
,最好是根据压力测试结果来评估,这个值设置太大,会致使线程不够用而会致使太多的任务被fallback;设置过小,一些特殊的慢业务失败率提高,甚至会形成这个业务一直没法成功,在重试机制存在的状况下,反而会加剧后端服务压力。微服务
根据微服务实际状况来定:测试
通常实际大小为:spa
这个值并不是TPS
、QPS
、RPS
等都是相对值,指的是1秒时间窗口内的事务/查询/请求,semaphore.maxConcurrentRequests
是一个绝对值,无时间窗口,至关于亚毫秒级的,指任意时间点容许的并发数。当请求达到或超过该设置值后,其其他就会被拒绝。默认值是100。线程
是否开启超时,默认是true,开启。code
发生超时是是否中断线程,默认是true。事务
取消时是否中断线程,默认是false。io