我们有一个应用程序,它由一些微服务(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
})
我还试图禁用这个so答案中描述的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
取自文件。