最佳实践

预置并发

最近更新时间:2021-09-07 16:29:09

预置并发支持并发实例按配置预先启动,同时云函数平台不会主动回收这些实例,会尽可能地保障有相应数量的可以处理请求的并发实例。

您可通过此功能,为函数的指定版本设定预置并发额度。通过配置预置并发,可预先进行计算资源的准备,降低冷启动、运行环境初始化及业务代码初始化引起的耗时。

说明:

  • 预置并发功能目前处于内测阶段,您可前往 申请 页面申请开通此功能,我们将在7个工作日内给您答复。
  • 内测期间,预置并发能力不计费。正式发布后,处于空闲的预置并发实例会收取少量费用,处理请求的实例会按照请求的实际执行时间进行费用计算。详见计费概述

概述

预置并发是在版本维度上解决请求到来时遇到并发实例初始化的问题。当您为一个函数版本配置预置并发之后,将会有以下效果:

  1. 云函数平台立刻开始启动并发实例,直至达到配置值。
  2. 云函数平台不会主动回收预置并发实例,同时会尽可能地保障预置并发实例数。

预置并发与弹性调用的并发实例启动速度是分开的,预置并发的启动不会占用地域维度500个/分钟的弹性扩容速度。云函数平台会根据您业务的情况调整预置并发的启动速度。一般而言,预置2000个以上的并发实例,您至少需要预留30分钟的时间。

云函数平台不会主动回收预置并发实例,但并发实例可能由于进程退出、内存超限等问题不可用。一旦有不可用的实例,云函数平台会回收同时准备新的并发实例以达到预置并发实例的配置。期间可能出现短暂的实际并发实例数小于预置并发实例的情况,未启动的并发实例不会纳入计费范围。您可以在函数的监控信息“并发执行个数和预置并发”图中查看预置并发启动情况。

预置并发只能配置在已发布的版本上,无法配置在 $LATEST 版本上$LATEST 版本处于可编辑态,而预置并发需要在请求到来前启动并发实例。为了保障业务的稳定,避免因代码和配置编辑带来的版本不一致问题,预置并发只能配置在已发布的版本上。已发布版本的代码和配置无法修改,适合生产环境使用,详情可参见 版本管理

预置并发与并发管理

预置并发可以帮您解决函数初始化时间过长的问题,更快地进行响应请求。需注意的是,预置并发不是并发管理体系中的能力,设置预置并发不会对函数可以处理的并发上限有影响。每个函数可以并发处理的请求量完全依赖于函数最大独占配额或地域级并发额度。

以配置内存为128MB的某个函数版本为例:

业务场景 业务平均并发 预置并发 函数最大独占配额 效果
默认情况 100并发 未配置 未配置 所有第一次处理请求的并发实例有初始化过程。函数并发额度受账号其他函数的影响,可能会有超限。
函数关停 100并发 未配置 0MB(0并发) 最大独占配额为0并发,函数关停,所有请求均超限错误。
无需预置并发 100并发 未配置 19,200 MB(150并发) 所有第一次处理请求的并发实例有初始化过程。可以保障150并发,超过会有并发超限错误。
80%预置 100并发 10,240 MB(80并发) 19,200 MB(150并发) 持续有80个并发实例的无需初始化,20个并发实例第一次调用需要初始化。可以保障150并发,超过会有并发超限错误。
100%预置 100并发 12,800 MB(100并发) 19,200 MB(150并发) 持续有100个并发实例的无需初始化,超出的并发实例第一次调用需要初始化。可以保障150并发,超过会有并发超限错误。
完全预置 100并发 19,200 MB(150并发) 19,200 MB(150并发) 所有并发实例无需初始化。可以保障150并发,超过会有并发超限错误。
超额预置 100并发 25,600MB(200并发) 19,200 MB(150并发) 和完全预置相比,多了50个预置并发的费用,其他相同。

并发管理体系(地域级并发额度、函数最大独占配额)负责同一时间内可以处理的请求量,预置并发负责保障有可以处理请求的并发实例。两者解耦的关系可以实现 无初始化过程的流量切换 等能力。

预置并发限制

预置并发配置额受限于账号维度的额度,即地域下所有函数所有版本的总预置并发额度小于等于账号维度的并发配额

操作步骤

新增预置并发

针对函数已发布的版本,可以设定期望数量的预置并发数。

注意:

函数进行 发布版本 操作后,才能针对版本进行预置设置。

  1. 登录云函数控制台,选择左侧导航栏中的 函数服务
  2. 在“函数服务”列表页面,选择需进行配置的函数名,进入“函数管理”页面。
  3. 在“函数管理”页面中,选择左侧并发配额,进入“并发配额”页面。
  4. 在“并发配额”页面中,单击新增预置并发。如下图所示:
  5. 在弹出的“新增函数预置并发”窗口中,选择期望版本及预置并发数,单击提交即可。如下图所示:

    设置完成后,您可在“预置并发”中查看配置的状态。云函数后台将花费一定的时间完成预置并发的扩容,并将已启动准备的并发数、完成情况展示在列表中。

更新预置并发

当云函数后台完成预置并发的扩容时,您可按需修改并发数。

  1. 登录云函数控制台,选择左侧导航栏中的 函数服务
  2. 在“函数服务”列表页面,选择需更新预置并发函数,进入“函数管理”页面。
  3. 在“函数管理”页面中,选择左侧并发配额,进入“并发配额”页面。
  4. 在“并发配额”页面中,选择需更新版本所在行右侧的设置。如下图所示:
  5. 在弹出的“设置函数预置并发”窗口中,更新设置值并单击提交即可。
    设置完成后,云函数平台将根据您的修改情况,在一定时间内再次完成并发数的增加或减少。

删除预置并发

当您不再计划使用某个预置并发配置时,可进行删除操作。

  1. 登录云函数控制台,选择左侧导航栏中的 函数服务
  2. 在“函数服务”列表页面,选择需删除预置并发函数,进入“函数管理”页面。
  3. 在“函数管理”页面中,选择左侧并发配额,进入“并发配额”页面。
  4. 在“并发配额”页面中,选择需调整版本所在行右侧的删除。如下图所示:
  5. 在弹出的“删除函数预置并发配额”窗口中单击确认即可。
    配置删除后,云函数后台将逐步回收并发实例。

相关操作

利用预置并发进行流量切换

您可以根据业务并发量设置函数最大独占配额,根据流量切换需要配置预置并发。操作过程如下:

  1. 发布新版本。
  2. 在新版本上设置需要的预置值。
  3. 等待新版本的预置完全启动。
  4. 通过 流量灰度,逐步将流量从旧版本切到新版本。如遇到问题,则流量切回旧版本。
  5. 流量完全切至新版本,观察一段时间无异样后,删除旧版本的预置并发。

以下表中的场景为例,您可以在函数最大独占配额150并发的情况(该函数能最多可以并发处理150个请求)下,同时给多个版本设置100预置并发(每个版本都有100个启动好的实例),从而进行无初始化过程的流量切换。

业务场景 业务平均并发 预置并发 函数最大独占配额 效果
100%预置 100并发 12,800 MB(100 并发) 19,200 MB(150 并发) 持续有100个并发实例的无需初始化,超出的并发实例第一次调用需要初始化。可以保障150并发,超过会有并发超限错误。

如下图所示,版本4和版本5配置100预置并发。此时您可以通过流量灰度能力,将业务的100并发从版本4灰度到版本5。无论100并发以任何比例分配至版本4和版本5,都不会遇到有初始化过程的实例,从而方便您更快地发布版本与流量切换。

image-20210526151749211

目录