对于 Cloud Run,每个修订版本都会根据处理所有传入请求所需的实例数量而自动扩缩。
处理请求的实例越多,占用的 CPU 和内存就越多,因而产生的费用也越高。
为了让您获得更多控制权,Cloud Run 提供每个实例的并发请求数上限设置,用于指定给定实例可以同时处理的请求数量上限。
每个实例的并发请求数上限
您可以配置每个实例的并发请求数上限。默认情况下,每个 Cloud Run 实例可以同时接收最多 80 个请求;您最多可以将此上限提高到 1000。
虽然您应该使用该默认值,但如果需要,您也可以减小并发数上限。例如,如果您的代码无法处理并行请求,请将并发设置为 1
。
指定的并发值为最大值,如果实例的 CPU 已被充分利用,则 Cloud Run 可能不会向指定实例发送这么多请求。
下图展示了每个实例的并发请求数上限会对处理传入并发请求所需的实例数量产生何影响:
何时将并发数上限设置为一次处理一个请求。
您可以限制并发设置,以确保一次只有一个请求发送到每个正在运行的实例。在下列情况下,建议您考虑执行此操作:
- 每个请求都会使用大部分可用 CPU 或内存。
- 您的容器映像并非设计用于同时处理多个请求,例如,如果您的容器依赖于两个请求无法共享的全局状态。
请注意,将并发请求数设置为 1
可能会对扩缩性能造成负面影响,因为许多实例都将需要启动才能处理急剧增加的传入请求。
案例研究
以下指标展示了一个用例,其中 400 个客户端每秒向一个 Cloud Run 服务发出 3 个请求,该服务的每个实例的并发请求数上限设置为 1。顶部的绿线表示一段时间内的请求数,而底部蓝线表示开始处理请求的实例数量。
以下指标显示 400 个客户端每秒向一个 Cloud Run 服务发出 3 个请求,该服务的每个实例的并发请求数上限设置为 80。顶部的绿线表示一段时间内的请求数,而底部蓝线表示开始处理请求的实例数量。请注意,处理相同请求量所需的实例要少得多。
后续步骤
如需管理 Cloud Run 服务的每个实例的并发请求数上限,请参阅设置每个实例的并发请求数上限。
如需优化每个实例的并发请求数上限设置,请参阅关于调整并发设置的开发提示。