com.netflix.zuul.exception.ZuulException: Forwarding error

场景

项目基于SpringCloud,生产者做了负载,消费者(此处用的ribbon + restTemplcate)做了降级(hystrix),当一个消费者关掉后,访问网关(zuul),出现如下错误:

1
2
3
4
5
6
7
8
9
10
11
12
com.netflix.zuul.exception.ZuulException: Forwarding error
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:183) ~[spring-cloud-netflix-core-1.3.1.RELEASE.jar:1.3.1.RELEASE]
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:158) ~[spring-cloud-netflix-core-1.3.1.RELEASE.jar:1.3.1.RELEASE]
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.run(RibbonRoutingFilter.java:106) ~[spring-cloud-netflix-core-1.3.1.RELEASE.jar:1.3.1.RELEASE]
at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:112) ~[zuul-core-1.3.0.jar:1.3.0]
at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:193) ~[zuul-core-1.3.0.jar:1.3.0]
at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:157) ~[zuul-core-1.3.0.jar:1.3.0]
at com.netflix.zuul.FilterProcessor.route(FilterProcessor.java:118) ~[zuul-core-1.3.0.jar:1.3.0]
at com.netflix.zuul.ZuulRunner.route(ZuulRunner.java:96) ~[zuul-core-1.3.0.jar:1.3.0]
at com.netflix.zuul.http.ZuulServlet.route(ZuulServlet.java:116) ~[zuul-core-1.3.0.jar:1.3.0]
at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:81) ~[zuul-core-1.3.0.jar:1.3.0]
................... 省略一大片..............

解决方法

在网关服务中的配置文件中配置如下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
zuul:
okhttp:
enabled: true # 使用okhttp方式请求,正常来说okhttp比较速度快一点
semaphore:
max-semaphores: 500 # 并发处理数,值越大越好,但到到达一个临界点之后,就不会提高响应速度了
host:
socket-timeout-millis: 30000 # socket超时时间,如果使用service-id方式是不用配置的
connect-timeout-millis: 30000 # 连接时间semaphores
max-total-connections: 5000 # 最大连接数,值越大越好,但到到达一个临界点之后,就不会提高响应速度了
max-per-route-connections: 5 # 每个router最大连接数,降低请求时间,越小越好,但达到一定层级就没用了

hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 30000 # Hystrix超时时间
strategy: THREAD

ribbon:
ReadTimeout: 20000 # 处理时间
ConnectTimeout: 20000 # 连接时间
MaxAutoRetries: 0 #最大自动重试次数
MaxAutoRetriesNextServer: 1 # 换实例重试次数
MaxTotalHttpConnections: 2000 # 最大http连接数,越大越好,但到到达一个临界点之后,就不会提高响应速度了
MaxConnectionsPerHost: 1000 # 每个host连接数
注:解决方案来源于网上,具体链接没有找到。
坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------
分享到:
0%