[Google Cloud Functions +通过ESPv2的端点:超时问题

问题描述 投票:2回答:2

我有各种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 Service超时。那里我已经有了更高的超时时间:

spec:
  timeoutSeconds: 900

该函数本身完成而没有错误。因此,我想问题应该出在端点或云运行中。

Troubleshooting responses documentation没有帮助。首先,我认为这仅适用于ESPv1(并且我无法明确找到适​​用于v2的内容),并且根本没有提到504响应。

是否可能必须直接配置Envoy服务器?我该怎么做?我还有其他需要配置超时的内容吗?

google-cloud-platform google-cloud-functions google-cloud-endpoints google-cloud-run google-cloud-endpoints-v2
2个回答
2
投票

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

因此Cloud Endpoint超时。但是记录在15s,而不是30s,很奇怪...因此您可以使用the deadline parameter on your x-google-backend definition

覆盖它

0
投票

您正在使Cloud run最大超时时间为300秒。如果您需要更高的超时时间(600s),则可以使用在Anthos上运行的云。(如果这是您所需要的全部功能,则价格昂贵)。

对于您想要的900s超时,最简单的方法是将容器部署到计算实例中(可以在启动时完成,并且只需很少的精力。)>

如果您可以稍微修改一下代码,您的下一个最佳选择是使用云功能/作为前端运行的云,该云功能将您的请求路由到队列,并且某些实例可以将其带入批处理作业以处理它们。

[如果您已经具有k8s集群,则可以通过knative部署该云运行功能,并调整knative和服务网格(istio)超时。警告您冒DoS / Do $攻击者的风险。

© www.soinside.com 2019 - 2024. All rights reserved.