第一次调用时 ZuulException (SendErrorFilter)

2024-01-26

我正在通过 Spring Cloud、Spring Boot 和 Docker 构建一个应用程序。整个应用程序运行良好。我有几个微服务。每个项目都在 Docker 上运行。当我尝试通过 Zuul API 网关使用我的微服务时,我在第一次调用时收到错误。但如果我刷新浏览器它工作正常。错误如下——

2019-03-10 04:54:55.440  WARN [netflix- 
zuul-api-gateway- 
server,1855093598d4f99c,1855093598d4f99c
true] 1 --- [nio-8765-exec-1] 
o.s.c.n.z.filters.post.SendErrorFilter   
: Error during filtering


com.netflix.zuul.exception.ZuulException 
at 
org.springframework.cloud.netflix.zuul.
filters.post.SendErrorFilter.
findZuulException(SendErrorFilter.java:
114) ~[spring-cloud-netflix-zuul- 
2.1.0.RC3.jar!/:2.1.0.RC3]
at 
org.springframework.cloud.netflix.zuul.
filters.post.SendErrorFilter.run
(SendErrorFilter.java:76) ~[spring- 
cloud- 
netflix-zuul-2.1.0.RC3.jar!/
:2.1.0.RC3]
at 
com.netflix.zuul.ZuulFilter.runFilter
(ZuulFilter.java:117) [zuul-core- 
1.3.1.jar!/:1.3.1]
at 
com.netflix.zuul.FilterProcessor.
processZuulFilter(FilterProcessor.
java:193) [zuul-core-1.3.1.jar!/:1.3.1]
 at 
com.netflix.zuul.FilterProcessor.
runFilters(FilterProcessor.java:157) 
[zuul-core-1.3.1.jar!/:1.3.1]
at 
com.netflix.zuul.FilterProcessor.error
(FilterProcessor.java:105) [zuul-core- 
1.3.1.jar!/:1.3.1]
at com.netflix.zuul.ZuulRunner.error
(ZuulRunner.java:112) [zuul-core- 
1.3.1.jar!/:1.3.1]
at 
com.netflix.zuul.http.ZuulServlet.error
(ZuulServlet.java:145) [zuul-core- 
1.3.1.jar!/:1.3.1]
at 
com.netflix.zuul.http.ZuulServlet.servic
e(ZuulServlet.java:83) [zuul-core- 
1.3.1.jar!/:1.3.1]
at org.springframework.web.servlet.mvc.
Servlet 
letWrappingController.java:165) [spring- 
webmvc- 
5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
at org.spr

我已经为我的所有项目创建了图像。并将其推送到 DockerHub 中。 Docker-Compose 文件我也将其推送到了 GitHub 中。下面是路径。

https://github.com/numery009/DockerCompose/blob/master/docker-compose.yaml https://github.com/numery009/DockerCompose/blob/master/docker-compose.yaml

我还将它部署在 EC2 上的 Docker Swarm 上。 但是当我尝试通过 Zuul 使用我的微服务时,它根本不起作用。我的每个请求都收到相同的“过滤器错误”。

请帮忙!!!。


对于通过 Zuul 处理的请求,我们需要牢记 3 件事

1) 根据本文件 -https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.4.3.RELEASE/single/spring-cloud-netflix.html#_zuul_eager_application_context_loading https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.4.3.RELEASE/single/spring-cloud-netflix.html#_zuul_eager_application_context_loading

Zuul 内部使用 Ribbon 来调用远程 url,并且默认情况下,Ribbon 客户端在第一次调用时由 Spring Cloud 延迟加载。可以使用以下配置更改 Zuul 的此行为,并将导致与功能区相关的子应用程序上下文在应用程序启动时急切地加载。

应用程序.yaml

zuul:
   ribbon:
      eager-load:
         enabled: true

应用程序属性

zuul.ribbon.eager-load.enabled= true

2)根据本文件 -http://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_service_discovery_configuration http://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_service_discovery_configuration

服务发现配置--- 如果 Zuul 使用服务发现,则需要关注两个超时,Hystrix 超时(因为默认情况下所有路由都包含在 Hystrix 命令中)和 Ribbon 超时。 Hystrix 超时需要考虑功能区读取和连接超时以及该服务将发生的重试总数。默认情况下,Spring Cloud Zuul 将尽力为您计算 Hystrix 超时,除非您明确指定 Hystrix 超时。

Hystrix 超时使用以下公式计算:

(ribbon.ConnectTimeout + ribbon.ReadTimeout) * (ribbon.MaxAutoRetries + 1) * 
(ribbon.MaxAutoRetriesNextServer + 1)

例如,如果您在应用程序属性中设置以下属性

应用程序.yaml

ribbon:
   ReadTimeout:100
   ConnectTimeout:500
   MaxAutoRetries:1
   MaxAutoRetriesNextServer:1

应用程序属性

ribbon.ReadTimeout= 100
ribbon.ConnectTimeout= 500
ribbon.MaxAutoRetries= 1
ribbon.MaxAutoRetriesNextServer= 1

然后 Hystrix 超时(对于本例中的所有路由)将设置为 2400ms。


在我的 zuul 应用程序配置中,我添加了以下属性。它适用于我的第一次通话,没有任何错误。

应用程序.yaml

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 11000

ribbon:
   ConnectTimeout: 10000
   ReadTimeout: 10000

应用程序属性

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds= 11000

ribbon.ConnectTimeout= 10000
ribbon.ReadTimeout: 10000

3)这是最简单的方法。禁用 hystrix 执行超时。

根据这份文件——https://github.com/Netflix/Hystrix/wiki/Configuration#executiontimeoutenabled https://github.com/Netflix/Hystrix/wiki/Configuration#executiontimeoutenabled

以下属性将禁用 Zuul 上的 hystrix 执行超时

应用程序属性

hystrix.command.default.execution.timeout.enabled=false

如果我们牢记这3个场景,那么我们就可以轻松得到ZuulException(SendErrorFilter)的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一次调用时 ZuulException (SendErrorFilter) 的相关文章

随机推荐

  • 如何在 spmd 块中索引共分布式数组

    我正在做一个非常大的计算 大气吸收 其中有很多单独的窄峰 最后全部加起来 对于每个峰 我预先计算了峰形函数值高于我选择的阈值的范围 然后我逐行将峰添加到我的光谱中 下面给出了一个最小示例 X 1 1e7 K numel a count th
  • Javascript对函数数组执行“reduce”如何实现函数组合?

    我在中遇到了这种模式redux compose功能 我仍然不明白在下面的示例中如何从最后一个而不是从第一个开始评估函数 function f2 a return a a function f3 a return a a a function
  • 如何修复 sapper/svelte 中的 localStorage 错误

    import writable from svelte store Read the current token from LocalStorage on boot const token writable localStorage get
  • 如何让 Windows Phone 应用程序像默认应用程序一样加载得更快?

    我发现 Windows 手机中的默认应用程序 如 People Calculator etc 根本不需要时间加载 他们甚至没有启动屏幕图像 我尝试从应用程序的项目中排除 SplashScreenImage jpg 并在手机上运行它 我的应用
  • squeel 中的嵌套查询

    简短版本 如何在 squeel 中编写此查询 SELECT OneTable my count FROM OneTable JOIN SELECT DISTINCT one id count AS my count FROM Another
  • Git Bash 安装 React-Scripts 时出现错误“UNKNOWN:未知错误,scandir 'E:\...\node_modules\@babel\.helper-annotate-as-pure.DELETE'”

    UNKNOWN unknown error scandir E Sorted Capstone WOO WOO net WOO WOO net project FrontEnd frontendapp node modules babel
  • JSON.stringify 缺少属性

    我正在编写一个自定义 console error 函数 以便每次发生错误时我都会收到一封电子邮件 要在电子邮件正文中发送错误 我使用JSON stringify 问题是它缺少一些属性 请参阅下面的两张图片 Email In console
  • 在MVC中使用Json.NET自动将mongodb ObjectId重新设置为字符串

    我有一个 MVC net 项目 并且正在使用 mongodb 在我的一些控制器中 我返回带有 ObjectId 的 JsonResult 我希望将 ObjectId 序列化为字符串 我发现了类似的问题并使用了这个答案 使用自定义JsonCo
  • 选择具有最小计数的行 (*)

    假设我有一个带有列的简单投票表 id primaryKey token int candidate int rank int 我想提取具有特定排名的所有行 按候选人分组 最重要的是仅使用最小计数 到目前为止我已经达到了 SELECT can
  • 自动布局(约束)与自动调整大小蒙版(弹簧和支柱)

    这些布局系统可帮助您调整大小 无论屏幕大小和方向如何 如果我有自动调整大小掩模 弹簧和支柱 这样的简单解决方案 为什么我应该使用自动布局 约束 当我开始使用自动布局时我也有同样的问题 自动布局可以做到这一切弹簧和支柱为我们提供以及更多 自动
  • 数据模板有多贵? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 I have 性能问题 https stackoverflow com q 38248842 1997232我正在努力挖掘原因 到目前为止 我不
  • Zuul 反向代理与 Keycloak 服务器

    我正在使用 Zuul 反向代理实用程序配置 Spring Cloud Angel SR6 应用程序 以隐藏内部服务端口 我的 zuul 边缘 服务发布在 8765 端口 我的组织服务发布在 8083 端口 当我在没有安全性的情况下访问应用程
  • 着色器使立方体的边缘倾斜?

    这个问题涉及使用着色器 可能在 Unity3D 环境中 但 Metal 或 OpenGL 都可以 以在网格最小立方体上实现圆角边缘 我希望只使用 12 个三角形的简约网格立方体 然后通过着色器 使每个块的边缘 角 稍微倾斜 其实这样可以吗带
  • Set-Cookie 标头未在 Chrome 中设置 cookie

    我正在 AJAX 调用另一个服务 API 然后该 API 应该返回一个 cookie 该 cookie 将在我的浏览器中设置 以允许我进行其余的 API 调用 然而 虽然响应标头包含 Set Cookie 标头 但实际上并未设置任何 coo
  • 是否可以同时使用带有多个预设的 Jest?

    是否可以将 Jest 与多个预设一起使用 例如 jsdom 和 react native 我想测试一个可以在 Web 和 React Native 环境中工作的 React 组件 问题是该组件可能使用 React Native 库或某些文档
  • Intellij 中的 AVD 管理器被禁用

    我正在记录这个问题和解决方案 如下 因为我第二次发现自己在这上面浪费了几个小时 解决方案 文件 gt 设置 gt 在搜索栏中输入 Android 选择 Android SDK 选择 编辑 Intellij 现在要求下载 SDK 800MB
  • Django - 媒体上传 [Errno 13] 权限被拒绝

    我在让 django 很好地处理图像上传时遇到了一些麻烦 我的脚本将根据日期创建目录 如下所示 file models FileField upload to uploads m Y 现在 如果我在上传文件夹中创建日期目录并将文件夹 chm
  • 自动布局使视图在剩余空间中居中(以编程方式)

    如何添加自动布局约束以编程方式将视图置于剩余空间的中心 参见下面的示例图片 目前 我在底部添加一个容器视图 然后将视图置于容器视图的中心 但我想知道是否有任何其他解决方案不需要使用容器视图 您需要添加一个间隔视图来执行此操作 让我们从一些观
  • 如何在 ASP.NET Core 中设置强类型配置?

    本文 http www mikesdotnetting com article 284 asp net 5 configuration and 另一篇文章 https weblog west wind com posts 2015 Jun
  • 第一次调用时 ZuulException (SendErrorFilter)

    我正在通过 Spring Cloud Spring Boot 和 Docker 构建一个应用程序 整个应用程序运行良好 我有几个微服务 每个项目都在 Docker 上运行 当我尝试通过 Zuul API 网关使用我的微服务时 我在第一次调用