delay - Google Cloud Run - 请求延迟
问题描述
我们目前正在为 node.js docker-service 测试 Google Cloud Run。到目前为止,它看起来很整洁,但是当服务闲置一段时间时,第一个请求似乎很慢(大约 3 秒来提供静态页面,随后的请求在大约 0.2 秒内完成)。由于我们的应用程序对延迟非常敏感,因此我们希望避免这种延迟。
我们尝试启用“始终分配 CPU”预览功能,但它似乎并没有解决我们的问题。
有谁知道这里是否有事可做,或者我们是否应该寻找其他服务?
解决方案
这可能会对您有所帮助 :) 来源 # Google 文档。
空闲实例随着流量的波动,Cloud Run 会尝试通过保留一些空闲实例来处理流量高峰来减少冷启动的机会。例如,当容器实例处理完请求后,它可能会保持空闲一段时间,以防需要处理另一个请求。
Cloud Run 但是,如果不需要处理任何请求,Cloud Run 会在一段时间后终止未使用的容器。这意味着冷启动仍然可能发生。容器实例根据需要进行扩展,它将完全初始化执行环境。虽然您可以使用 min-instance 设置保持空闲实例永久可用,但这会产生成本,即使服务没有主动服务请求。
因此,假设您希望在可能的冷启动期间最小化成本和响应时间延迟。您不想设置空闲实例的最小数量,但您也知道容器启动时需要的任何额外计算才能开始侦听请求,这意味着更长的加载时间和延迟。
Cloud Run 容器启动 您可以采取一些技巧来针对容器启动时间优化服务。这里的目标是最大限度地减少延迟容器实例服务请求的延迟。但首先,让我们回顾一下 Cloud Run 容器启动例程。
启动服务时
- 启动容器
- 运行 entrypoint 命令来启动你的服务器
- 检查开放的服务端口
您想要调整您的服务,以最大限度地减少步骤 1a 所需的时间。让我们通过 3 种方法来优化 Cloud Run 响应时间的服务。
- 创建更精简的服务
- 使用更精简的基础映像
- 使用全局变量
推荐阅读
- regex - 是否有 Notepad++ RegEx 可以删除除数字和空格之外的所有内容?
- java - 离散余弦变换实现
- node.js - 反应脚本构建失败
- ruby - 如何连接到 dockerized Sinatra 应用程序
- r - 使用 dplyr 进行自适应范围的逐行操作
- android - 即使从清单中删除了权限,如何摆脱敏感的权限表单?
- c# - 提高 ASP .NET Core 3.1 和 Entity Framework Core 的并发性能?
- amazon-web-services - 如何使用 VPC Endpoint 在 AWS 中创建文件网关(存储网关)?
- flutter - 尝试在颤振上发出获取请求时出现错误
- javascript - 从字符串中分离变量并创建新数组