IDC

云函数 函数并发 - 操作指南

作者:admin 2021-10-13 我要评论

云函数是通过并发实例来进行请求或事件的处理,也可将并发实例称为并发或实例。 相关概念 并发配额 :目前在账号、函数、版本维度进行并发限制配置时的额度,配...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

云函数是通过并发实例来进行请求或事件的处理,也可将并发实例称为并发或实例。

相关概念

  • 并发配额:目前在账号、函数、版本维度进行并发限制配置时的额度,配额按内存为单位进行设置或调整,同一时刻运行的函数实例不可超过并发配额。实际可启动的并发实例数,根据配额除以函数的配置内存得到。
  • 并发实例数:并发实例的个数,每个并发实例在同一时刻可以处理一个函数事件。
  • 账号并发配额:当前用户账号在某一具体地域的并发配额。
  • 保留并发配额:在函数维度上为某一具体函数设置的并发配额。
  • 预置并发:在函数版本维度上设置的具体预置并发,预置并发的实例会在完成设置后预先启动并保持持续运行。

并发工作说明

云函数当前的一个并发实例在同一时刻仅处理一个事件。无论是同步请求还是异步请求,在云函数的平台接收到请求,传递进并发实例进行处理时,均按照一个并发同一时刻仅处理一个事件的逻辑。且在当前事件未处理完成返回到并发实例之前,后续事件或请求不会进入当前并发实例。

在异步请求的情况下,异步事件会先进入云函数平台的队列,并按照先进先出的原则依次处理异步请求。异步请求会根据队列长度、当前函数并发数等情况,选择合适的并发处理方式,拉起足够处理事件的并发实例依次处理事件。

在同步请求的情况下,同步事件到达云函数平台后,平台将会检测是否有空闲并发实例。如有,则事件将会立刻发送给空闲并发实例进行处理。如没有,则平台将会启动新的并发实例来处理事件。

并发扩容

在函数当前的并发实例不足以处理请求事件时,云函数平台将会启动新的并发实例来处理事件。

新并发的扩容速度,按账号在地域维度上限制为500个/分钟,即在1分钟内,最多可以启动500个新的并发实例。如在1分钟内已经达到了当前限制,则将无法再启动新的并发实例,持续到下1分钟。在此期间有新的并发扩容请求,将会产生扩容受限错误。

实例复用

当并发实例处理完成事件请求后,不会立刻被回收,而是按照一定的时间进行保留。在并发实例保留期间,如有新的请求事件需要处理,将会优先使用保留中的并发实例,从而实现事件的快速处理,不用等待重新启动新的并发实例。并发保留的时间由云函数平台根据情况动态调整,故函数业务代码中不能假设某个特定保留时间进行程序编写。

并发监控

函数的并发在处理实际请求时,该并发会被标记为执行并发。从云函数的监控中,可以查询到函数、函数某个具体版本、别名的执行并发。由于执行并发的采集有一定的时间间隔,如函数的执行时间很短而并发较高,则当前监控可能会有一定偏差。

并发限制及并发控制

目前云函数为用户提供三个层次的并发配额管理能力:

账号并发
  |- 函数保留并发
      |- 版本预置并发

账号并发

账号并发配额是一个腾讯云账号在某个具体地域上的并发配额,详情可参见 配额限制。目前并发配额按内存量进行体现。

当前地域下账号维度的并发配额为128000MB,即可提供1000个128MB配置的函数实例同时运行。在函数配置内存提升变大的情况下,可同时运行的实例数也会对应减少。例如,在函数配置内存为256MB的情况下,可同时运行的实例数是500个。

账号并发配额在每个地域是单独生效的,即在一个地域的实例运行情况,并不影响另一个地域的实例运行。

默认情况下,账号并发配额由当前地域下的所有函数共享。在某一具体时刻,所有函数处于运行状态的实际并发额之和,最大可以达到账号并发额度。

在账号并发配额不足的情况下,可能会出现有函数调用时出错,体现为超限错误(OverQuota),此时可以通过 提交工单 来进一步提升账号配额。

同时账号的可用配额,即可由函数共享的并发额度,会随着保留并发和预置并发的配置而减少,最低会减少到12800MB。即账号维度的可配置额度会留存12800MB额度不可分配到保留并发或预置并发中,用于未配置保留或预置的函数运行。

函数保留并发

保留并发为设置在函数维度上的并发配额,目前保留并发配额按内存量进行体现。保留并发配额由函数独享,即此函数的各版本处于运行状态的实际并发额之和,最大可以达到函数的保留并发额度。

为函数设置保留并发,可以保障函数的可运行并发额度,无需再和其他函数共享账号维度的并发配额,设置的额度将从账号并发额度中扣除。同时,为某一个函数设置了保留并发额度后,其他未设置保留并发额度的函数,将共享账号剩余的并发额度。

同时保留并发配额也是函数的并发实例额度上限,具体版本处于运行状态的并发额之和,不可超过保留并发额度。在保留并发额度的使用量达到上限的情况下,可能会出现有函数调用时出错,体现为超限错误(OverQuota),此时可以通过调整增大保留并发额度来进一步提升上限。

更多的函数保留并发配额说明,请参见 保留并发。

版本预置并发

预置并发为设置在版本维度上的并发,目前预置并发额度按内存量进行。设置了预置并发的版本,将会在设置后启动实例,而不是等待触发事件的到来。通过预先启动实例,可提前进行计算资源的准备,降低冷启动、业务代码初始化引起的耗时。

预置并发的配置数值,需要为函数版本的配置内存的倍数。预先启动的实例数量,为“预置并发配置/版本配置内存”。

更多的版本预置并发配额说明,请参见 预置并发。

使用场景说明

通过综合使用保留并发、预置并发等能力,您可以灵活调配多个函数间的资源用量情况,并按需预热函数。

共享配额

在未进行各项配置的情况下,各函数默认共享使用账号额度。如果有某个函数产生了突增业务调用,可以充分利用空闲未使用的额度,来保证突增不会引起函数的调用并发超限。

并发保障

如果有某个函数的业务功能比较敏感或关键,需要尽力保障请求的成功率,此时可以使用保留并发额度。保留并发可以给到函数独享额度,确保并发的可靠性,不会由于多函数的争抢导致的调用并发超限。同时,如果函数预计会有较高的并发,也需要将设置的保留额度调整到较高值。

预置并发

在函数对冷启动敏感、或代码初始化流程耗时较长、加载库较多的情况下,可以通过设置具体函数版本的预置并发,预先启动函数实例来保障运行。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
腾讯云代理商
精彩导读
海外云服务器
热门资讯
腾讯云代理商