嘿,溢出者!
我正在开发一个小型应用程序,每次将消息发布到 PubSub 主题时都会触发云函数。函数内的代码工作(显然)很好,但我正在尝试发布过程中的一些问题。
出于某种原因,当发布消息时,来自 Cloud Function 的警告日志会返回:“POST 429 [...] The request was aborted because there is no available instance”。
如果有人可以提供帮助,我想知道它的含义以及如何处理它。我不确定如何从我的代码中解决这个问题。
感谢大家!
编辑:函数内存限制为 256MB,超时 60 秒。
编辑 2:我已经测试过删除实例限制,但服务一直失败(返回 POST 500 或 POST 429 错误)。
我还有一个问题,我的云函数有时会返回超时。我很确定问题的根源在于 PubSub,即之前提到的那个,这些 CF 对应于失败的 POST 请求。在大多数情况下,函数在时间范围内正确执行。
我的问题:如果消息一开始没有正确发布(也许它被重试?),为什么这些函数会被执行,更重要的是,为什么这些函数会达到它们的超时限制(它们不应该在消息发布之前触发正确,对吧)?
编辑 3:我一直在阅读 Google Cloud Functions 文档,发现我的问题已经记录在这里:https ://cloud.google.com/functions/docs/troubleshooting#scalability
正如纪尧姆所说(再次感谢!),这似乎是一个扩展问题。这些函数被触发得如此之快,以至于它们没有足够的时间来扩展实例。我将尝试处理传入消息的流,使其在加速时变慢。
本节的注释也可以提供帮助: https ://cloud.google.com/functions/docs/concepts/exec#auto-scaling_and_concurrency
注意:入站流量的极快增长可能会间歇性地导致某些请求失败,HTTP 代码为 500。这是因为请求在等待创建新实例时在挂起队列中超时。配置您的工作负载,使其在一分钟内逐渐增加流量可以帮助解决此问题。另请参阅云功能故障排除了解更多信息。
再次感谢大家!