自己有一个微服务项目,使用了GateWay进行限流处理;但是最近发现,无论如何,系统都登陆不上去了,出现了问题:
2. 登陆界面一直提示系统繁忙:
认证服务(被调着)响应的结果与服务请求着接受到的结果出现了偏差,因此,我将解决问题的方向定位在了GateWay上面;然后一路摸索,果然发现了端倪:
仔细看界面的请求时间:
也就是说,登陆认证服务请求了大概10s的时间,然后就取消了;然后我们再来看看网关的限流配置:
# hystrix 信号量隔离,5秒后自动超时 hystrix: # enabled: true # shareSecurityContext: true command: default: # 默认 execution: isolation: strategy: SEMAPHORE thread: timeoutInMilliseconds: 5000 fallbackCmd: execution: isolation: # strategy: SEMAPHORE thread: # 5秒没响应自动熔断 跳转到配置的fallbackUri timeoutInMilliseconds: 5000
由二我们得知,出现上述问题的主要原因,就是我们的hystrix熔断时间设置得太短了;因此,只要我们将熔断时间设置长一点,这个问题就迎刃而解了:
hystrix: # enabled: true # shareSecurityContext: true command: default: # 默认 execution: isolation: strategy: SEMAPHORE thread: timeoutInMilliseconds: 70000 fallbackCmd: execution: isolation: # strategy: SEMAPHORE thread: # 5秒没响应自动熔断 跳转到配置的fallbackUri timeoutInMilliseconds: 70000