首页 > 解决方案 > Google Cloud Run - 请求延迟

问题描述

我们目前正在为 node.js docker-service 测试 Google Cloud Run。到目前为止,它看起来很整洁,但是当服务闲置一段时间时,第一个请求似乎很慢(大约 3 秒来提供静态页面,随后的请求在大约 0.2 秒内完成)。由于我们的应用程序对延迟非常敏感,因此我们希望避免这种延迟。

我们尝试启用“始终分配 CPU”预览功能,但它似乎并没有解决我们的问题。

有谁知道这里是否有事可做,或者我们是否应该寻找其他服务?

标签: delaygoogle-cloud-run

解决方案


这可能会对您有所帮助 :) 来源 # Google 文档。

https://cloud.google.com/blog/topics/developers-practitioners/3-ways-optimize-cloud-run-response-times

空闲实例随着流量的波动,Cloud Run 会尝试通过保留一些空闲实例来处理流量高峰来减少冷启动的机会。例如,当容器实例处理完请求后,它可能会保持空闲一段时间,以防需要处理另一个请求。

Cloud Run 但是,如果不需要处理任何请求,Cloud Run 会在一段时间后终止未使用的容器。这意味着冷启动仍然可能发生。容器实例根据需要进行扩展,它将完全初始化执行环境。虽然您可以使用 min-instance 设置保持空闲实例永久可用,但这会产生成本,即使服务没有主动服务请求。

因此,假设您希望在可能的冷启动期间最小化成本和响应时间延迟。您不想设置空闲实例的最小数量,但您也知道容器启动时需要的任何额外计算才能开始侦听请求,这意味着更长的加载时间和延迟。

Cloud Run 容器启动 您可以采取一些技巧来针对容器启动时间优化服务。这里的目标是最大限度地减少延迟容器实例服务请求的延迟。但首先,让我们回顾一下 Cloud Run 容器启动例程。

启动服务时

  • 启动容器
  • 运行 entrypoint 命令来启动你的服务器
  • 检查开放的服务端口

您想要调整您的服务,以最大限度地减少步骤 1a 所需的时间。让我们通过 3 种方法来优化 Cloud Run 响应时间的服务。

  1. 创建更精简的服务
  2. 使用更精简的基础映像
  3. 使用全局变量

推荐阅读