3

我在 Cloud Run 中托管了我的节点应用程序,并且我的所有请求都在 300 到 600 毫秒的时间内提供了服务。但是一个端点从第 3 方服务获取数据,因此请求需要 1.2 秒到 2.5 秒才能完成请求。

我对此的怀疑是

  1. 1.2s - 2.5s 的请求适合云端运行吗?或者是否有任何规则要求在 xx 毫秒内完成请求?

另请参阅屏幕截图,我在日志中收到一条消息以及请求“该请求导致启动新容器实例,因此可能比典型请求花费更长的时间并使用更多的 CPU”

  1. 是什么导致一个新的容器实例被启动?
  2. 是否有任何替代方案或解决方法来处理长请求?

任何意见/建议将不胜感激。

提前致谢。

谷歌云开始运行新实例

4

1 回答 1

4
  1. 我认为这不是问题,除非您担心 CPU/内存时间的成本,老实说,这只有在您每天收到 10k+ 个请求时才有意义。所以,可能没关系,云运行可以处理得很好(我自己的应用程序的请求时间比那个长,没有问题)

  2. 您的服务可能被“缩放到零”,这意味着没有容器正在运行来服务请求。在这种情况下,有必要启动一个新实例并等待与该过程相关的任何初始化/启动成本。由于所有其他实例都处于其请求限制,它也有可能被自动缩放。确保每个实例的最大并发请求数设置大于一 - Node/Express 可以一次处理多个请求。另外,您只需按总时间付费,而不是按请求付费:

  3. 在您需要很长时间(30 秒,分钟+)操作的情况下,切换到一些不同的数据传输方法可能是个好主意。您可以使用轮询,客户端每 5 秒发出一次请求并检查响应是否准备好。您也可以切换到某种基于推送的系统,例如 WebSockets,但 Cloud Run 不支持。

TL;DR 更长的请求(约 10-30 秒)应该没问题,除非您担心它们可能大规模发生的计算时间增加的成本。

于 2019-08-14T05:25:34.643 回答