asp.net-core - 超过 30 秒的请求超时错误
问题描述
我们有一个应用程序,它由一些微服务(asp.net core 5.0 Web API 应用程序)和一个网关(Ocelot)组成。一切都配置得很好(CORS)并且工作正常。超过 30 秒的请求除外。我们知道 Ocelot 的默认超时时间是 90 秒,并且没有降低该值的 QoS 策略。这 90 秒在我的开发机器(Windows 10)中有效。我可以在我的开发环境中发出超过 30 秒的请求。我检查了网关的日志和它们确实成功的微服务,如下所示:
网关日志
[19:48:36 INF] Request finished HTTP/1.1 POST http://gatewaydomain/api/crm/v1/portfolio/getActivityCockpitView application/json;charset=UTF-8 332 - 200 13082 application/json;+charset=utf-8 47560.9299ms
API 日志
[19:48:36 INF] Request finished HTTP/1.1 POST http://apidomain/api/v1/portfolio/getActivityCockpitView application/json;charset=UTF-8 332 - 200 - application/json;+charset=utf-8 47554.2577ms
而且我确定它与客户端请求配置无关,我的 Axios 实例配置为:
const service = axios.create({
timeout: 1000000, // request timeout
maxContentLength: 200000
})
我还尝试禁用此答案中描述的 chrome 安全设置(以查看它是否与客户端有关) ,但它不起作用。
我们的应用程序部署在 OpenShift 集群中,我们使用标准的 asp.net 5.0 容器 (mcr.microsoft.com/dotnet/aspnet)
而且我们在网关前面没有任何 WAF(还 :))可能会影响我们的请求。
我会很感激任何关于可能出错的想法。
编辑 :
还设法通过与邮递员相同的请求获得超时。所以看起来这不是 CORS 问题,但仍然不知道是什么导致了超时。
解决方案
是的,我终于在我失去更多头发之前找到了它:)
事实证明 Openshift Routes 有默认的 30 秒超时。如果要扩展该值,则需要编辑路由 yaml 文件,如下所示:
- kind: Route
apiVersion: v1
id: "$APPLICATION_NAME-rhdmcentr-http"
metadata:
name: "$APPLICATION_NAME-rhdmcentr"
labels:
application: "$APPLICATION_NAME"
annotations:
haproxy.router.openshift.io/timeout: 90s
取自文档。
推荐阅读
- javascript - 使用复选框过滤带有 JSON 的元素
- javascript - 网页上多行文本的省略号 + 引号
- c# - C# - Signalr 客户端连接导致性能问题 Windows 服务
- python - 解析 Pandas 作为列表返回
- angular - Angular 中的 Firebase 身份验证
- webpack - 使用 webpack 提供 index.html 以外的服务
- sql - 谓词中的 CASE 中为 NULL
- node.js - 打字稿:sharp.js 将流转换为多种尺寸并将其上传到 S3
- visual-studio-code - 在 VS 代码片段中如何重用像变量一样的转换以避免一次又一次地编写转换?
- javascript - 使用 Google 文档中的 Google Apps 脚本更改光标所在单词的颜色