有关如何追踪 Google Cloud 429 问题的建议

问题描述 投票:0回答:1

我的http触发云功能最近刚刚失败,出现429,这是太多实例了。云函数的最小实例为 1,最大实例为 4。在错误期间,云函数处于空闲状态,直到发生调用。云功能没有启动,所以日志中没有调用时间。随后的调用没有导致错误。云功能对互联网上的外部系统进行 Web 服务调用。

我的第一个想法是云函数超出了 4 个实例的最大值,但事实证明,在那段时间云函数处于空闲状态,并且使用了最少 1 个实例。上次通话是在 2 小时前,这意味着没有超出费率配额。云函数显示内存使用率较低,并且实例计数从未高于或低于 1。日志仅表明请求已中止,因为没有可用的实例。这意味着该函数从未执行过,因此没有执行时间的指标。日志中没有其他内容。

您认为这可能会发生什么?后端有可能因为闲置而杀死云功能吗?如果是这种情况,实例计数是否会下降到零,然后重新启动回到 1(由于最小实例设置),这不会导致日志条目吗?

google-cloud-functions gcloud
1个回答
0
投票

基于此文档解决 Cloud Functions 错误

  • The request was aborted because there was no available instance

    • severity=WARNING
      (响应代码:429)由于您在配置过程中设置的
      max-instances
      限制,云功能无法扩展。

这是由以下任一原因引起的:

  • 流量突然大幅增加。

  • 冷启动时间长

  • 请求处理时间较长。

  • 功能错误率高。

  • 达到最大实例限制,因此系统无法进一步扩展。

  • Cloud Functions 服务造成的暂时性因素。

正如您提到的,

max-instances
设置为
4
,这可能会导致错误429。

您可以根据 Google Cloud 推荐尝试以下解决方案:

  • 对于基于 HTTP 触发器的功能,让客户端对不得丢弃的请求实施指数退避和重试。如果您要从工作流触发云函数,则可以使用

    try
    /
    retry
    语法
    来实现此目的。

  • 对于后台/事件驱动的函数,Cloud Functions 支持至少一次交付。即使没有显式启用重试,事件也会自动重新传递,并且将重试函数执行。有关更多信息,请参阅重试事件驱动函数

  • 当问题的根本原因是一段时间内短暂性错误完全归因于 Cloud Functions 时,或者如果您需要有关问题的帮助,请联系 support

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