首页 > 解决方案 > Google Cloud Functions + Endpoints via ESPv2:超时问题

问题描述

我有各种 Cloud Functions 可以通过 Google Endpoints for Cloud Functions 访问。我或多或少地遵循了本指南:https ://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions 。这会在 Google Cloud Run 中设置一个ESPv2实例。到目前为止,它正在工作。

一项长期运行的云功能会出现问题。如果请求运行超过约。30秒,结束。然后 API 返回 504 错误代码。

Cloud Run Logs 显示以下条目:

请求已被终止,因为它已达到最大请求超时。要更改此限制,请参阅https://cloud.google.com/run/docs/configuring/request-timeout

参考文档说明了如何配置 Cloud Run 服务超时。我已经有一个更高的超时时间:

spec:
  timeoutSeconds: 900

函数本身完成没有错误。所以我想问题一定出在 Endpoints 或 Cloud Run 上。

对响应文档进行故障排除没有帮助。首先,我认为它仅适用于 ESPv1(我无法为 v2 明确找到类似的东西)并且它根本没有提到 504 响应。

是否有可能我必须直接配置 Envoy 服务器?我该怎么做?我还缺少其他什么来配置超时吗?

标签: google-cloud-platformgoogle-cloud-functionsgoogle-cloud-endpointsgoogle-cloud-rungoogle-cloud-endpoints-v2

解决方案


我认为这在 Cloud Run 上不是问题(最大超时时间是 900 秒而不是 300(Cloud Run 上的默认值,PubSub 的最大值是 600))。

所以 Cloud Endpoint 有一个超时。但它记录在 15 秒,而不是 30 秒,奇怪......所以你可以用你的 x-google-backend 定义中的截止日期参数覆盖它


推荐阅读