详情页标题前

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

详情页1

并发是云函数在某个时刻同时处理的请求数。在业务其他服务可以支撑的情况下,您可以通过简单的配置实现云函数从几个并发到数以万计并发的拓展。

应用场景

高 QPS 短运行时长

使用云函数进行简单的数据、文件处理,例如对象存储触发云函数进行信息上报、对文件处理等。此类场景下单次请求运行时间较短。

重计算长时间运行

使用云函数进行音视频转码、数据处理、AI 推理等场景,由于模型加载等操作导致函数初始化时间长、函数运行的时间长。包括 Java 运行环境的初始化时间较长。

异步消息处理

使用云函数做异步消息处理的场景较多,例如全景录制场景,腾讯云自研的全景录制,主打所见即所得的录制理念;TDMQ 函数触发场景,可最大程度的衔接消息队列两端的数据上下游,帮助用户实现 Serverless 体系下的异步事件解耦和削峰填谷的能力等。

产品优势

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

共享配额

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

并发保障

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

预置并发

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

并发扩容原理

并发实例复用与回收与并发扩容原理详情见 并发概述。

示例

例如,广州地域的账号默认并发额度可以支撑128MB函数的1000个并发实例。有大量请求到来时,第一分钟可以从0个并发实例启动到500个并发实例。如果还有请求需要处理,第二分钟可以从500个并发实例启动到1000个并发实例。下图模拟了业务流量峰值时函数并发处理的具体场景。随着业务请求量不断增加,没有可用并发实例处理新的请求时,函数将启动新的并发实例进行扩容。当达到弹性并发的扩容速度限制时,函数扩容速度逐渐变慢,新的请求将会受到限制尝试重试。接着函数会继续扩容,最终达到函数区域对账户的并发限制。最终在满足业务需求后,请求量逐步减少,函数未使用的并发实例会逐步停止。n

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

预置并发支持并发实例按配置预先启动,同时云函数平台不会主动回收这些实例,会尽可能地保障有相应数量的可以处理请求的并发实例。您可通过此功能,为函数的指定版本设定预置并发额度。通过配置预置并发,可预先进行计算资源的准备,降低冷启动、运行环境初始化及业务代码初始化引起的耗时。下图模拟了函数在处理业务流量峰值的预置并发的真实情况。n

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技



场景压测

场景1:高 QPS 短运行时长

此类场景下,QPS 较高单次请求运行时间较短,业务在冷启动的一两秒会有并发高峰。接下来我们通过测试观察流量逐步切换或配置预置并发是否能够缓解冷启动并发高峰。

业务情况

业务信息 指标
函数初始化时长 业务没有初始化的操作
业务运行时长 5ms
QPS 峰值约10w左右

压测任务

我们计划分为三个压测任务,分别对应:完全冷启动、逐步切流量、配置预置并发。n每次压测任务都需要从冷启动开始,不能有热实例在;无其他函数影响。

压测目标

高 QPS 的业务在冷启动的一两秒会有并发高峰,通过流量逐步切换或配置预置并发可以缓解冷启动并发高峰。

压测配置

函数配置 a. 内存:128M,未开启异步执行和状态追踪,关闭日志投递b. 并发配额:4000 × 128Mc. duration:5msd. burst:2000
测试工具 使用 go-wrk 工具,直接调用 RegionInvoke 接口。

1.完全冷启动2.发布新版本逐步切流量3.配置预置并发客户端2k并发,调用2k × 5k次,统计并发执行情况以及冷启动并发情况。性能表现函数并发执行个数如下图所示,在3分钟内完成了整个并发扩缩容的流程。

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

函数冷启动数据如下图所示,并发可以瞬时启动,在1分钟内达到了我们设置的 burst 为2000冷启动限制。

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

该场景下平均 QPS 达到 6w左右,并发可以在1分钟内瞬时启动,burst冷启动限制正常,在3分钟内完成了这个并发扩缩容的全过程。

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

客户端2k并发,调用2k × 5k次。新版本1分钟内请求从0并发提升1k、再到2k并发,老版本并发由2000降低到1k、再到0并发,统计新老版本并发次数以及冷启动并发情况。性能表现并发折线图旧版本如下图所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

并发折线图新版本如下图所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

冷启动并发折现图旧版本如下图所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

冷启动并发折现图新版本如下图所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

从上述数据可以看到,通过逐步发版本切流量的方式可以降低并发的突然高峰。该函数预置2000个并发。预置启动成功后,2000个并发调用重复5k次,统计并发次数以及冷启动并发情况。性能表现并发折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

冷启动并发如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

可以看到整个区间冷启动数为0。函数请求次数如下图所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

从上述数据可以看到,通过配置预置实例可以使得并发冷启动数为0,推荐客户配置预置并发来保障性能、避免初始化时间过长的问题。

结论

综上,在高 QPS 短运行时间的场景,使用流量逐步切换可以缓解冷启动并发高峰,同时通过预置并发解决客户认为初始化过程(包含函数冷启动)时间过长的问题。

场景2:重计算长时间运行

业务情况

业务信息 指标
函数初始化时长 10s
业务运行时长 2mins
QPS 约20

压测目标

长时间计算任务的平均 QPS 不高,但由于计算时间长,大量实例处于运行状态,导致云函数的并发很高。此压测场景希望看到云函数在处理大量较长时间运行任务的时候,任务的调度和处理速度。

压测配置

函数配置 a. 内存: 128M 开启异步执行和状态追踪,关闭日志投递 b. 并发配额:2000 × 128M c. duration: 2min d. burst:2000
测试工具 使用 ab 工具,模拟 cos 服务的消息,通过函数的 cos 触发器调用函数。

压测任务

每次压测任务都需要从冷启动开始,不能有热实例在;无其他函数影响。展开全部长初始化、长运行时间场景、每个并发1个消息2000并发,每个并发1个消息,累计投递2000个请求。统计从第一个请求到达的开始时间、最后一个请求返回的结束时间,以及请求总处理时间的分布情况。性能表现并发折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


冷启动折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


函数请求次数如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


冷启动个数为何并不是同一分钟内冷启动完成?a. 异步场景,请求次数并不是一起到达 RegionInvoke,而是通过异步触发器的 worker 调用 RegionInvoke。b. 因为函数 duration 为2分钟,初始化10秒钟,总体耗时在3分钟内,所以随着函数请求次数的不断提高,但是前面启动的容器还没有释放,需要不停的启动容器来完成请求,函数请求次数每分钟增长的速率基本和冷启动的个数吻合。c. 函数并发到达最高点时冷启动开始下降,基本吻合符合正常。长初始化、长运行时间场景 、每个并发2个消息2000并发,每个并发2个消息,累计投递4000个请求。统计从第一个请求到达的开始时间、最后一个请求返回的结束时间,以及请求总处理时间的分布情况。性能表现并发折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

冷启动折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


函数请求次数如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技



结果分析

4000消息更能印证2000消息时的结论,前两分钟因为之前的函数没有释放,所以冷启动数和函数请求数是一致的,后续冷启动数和函数请求数增长基本保持一致。

结论

长初始化、长运行时间的业务能够稳定运行,系统能够随着请求数瞬时的完成扩缩容。

场景3:异步消息处理

业务背景

使用云函数做异步消息处理的场景较多,这里取运行100ms作为平均值。

业务信息 指标
函数初始化时长 0
业务运行时长 100ms

压测目标

异步消息的消费情况与生产相关,我们假设已经有大量的消息堆积,查看云函数的消费情况。其中会包括消费过程中受到并发限制而后重试的情况,您可以通过灵活调整函数的保留并发,从而控制云函数的消费速度,也就是对下游后台的压力。

压测配置

函数配置 a. 内存: 128M 开启异步执行和状态追踪,关闭日志投递 b. 并发配额:X × 128M c. duration:100ms d. burst:2000
测试工具 使用 ab 工具,模拟 cos 服务的消息,通过函数的 cos 触发器调用函数。

压测任务

每次压测任务都需要从冷启动开始,不能有热实例在。异步消息1k并发异步消息2k并发异步消息4k并发函数保留 2k 并发,投递100w条消息进行消费,记录总消费时间、消息处理的分布情况,并发监控。性能表现并发折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技

冷启动折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


函数请求次数如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


共计3分钟,处理完所有消息。函数保留 2k 并发,投递100w条消息进行消费,记录总消费时间、消息处理的分布情况,并发监控。性能表现并发折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


冷启动折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


函数请求次数如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


共计2分钟,处理完所有消息。函数保留 4k 并发,投递100w条消息进行消费,记录总消费时间、消息处理的分布情况,并发监控。性能表现并发折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


冷启动折线图如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


Dashboard 上函数冷启动数据,该冷启动有 burst 超限。函数请求次数如下所示:

腾讯云云函数(SCF)并发高性能架构最佳实践-云淘科技


共计1分钟,处理完所有消息。

结果分析

1. 1000并发配额提升到2000并发配额时,能看到函数的处理速度,包括函数并发等明显提升,所以在大量异步消息时提高并发配额可以提升消息处理速度。2. 2000并发配额提升到4000时,消息处理速度和函数并发量也有提升,但总体处理时间也在2分钟内,说明100w条异步消息时,4000肯定也能提升,但2000配额基本已满足场景需求。3. 4000并发配额时会有 burst 超限的问题,因为并发配额是4000,burst 是2000,所以大量消息时肯定会有超限的情况发生。

结论

大量异步消息场景,提升函数并发配额,能明显提升消息处理速度,符合预期。n您可以灵活控制函数并发,进而控制异步消息的消费速度。

注意事项

预置并发功能目前处于内测阶段,您可前往 申请 页面申请开通此功能,我们将在7个工作日内给您答复。内测期间,预置并发能力不计费。预计2021年11月正式发布,届时处于空闲的预置并发实例会收取少量费用,处理请求的实例会按照请求的实际执行时间进行费用计算,详情见 计费概述。
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/149800.html

(0)
上一篇 2023年12月9日 下午1:25
下一篇 2023年12月9日 下午1:25
详情页2

相关推荐

  • 阿里云RDS数据库什么是数据库代理-云淘科技

    RDS PostgreSQL数据库代理提供自动读写分离功能。数据库代理是位于数据库服务端和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求,具有高可用、高性能、可运维、简单易用等特点,本文介绍RDS PostgreSQL的数据库代理服务。 适用场景 事务内有大量请求,导致主实例负载过高的场景。 连接数过多导致主实例负载过高的场景。 纯只…

    阿里云数据库 2023年12月9日
  • 腾讯云轻量应用服务器使用 Matomo 应用模板搭建网站流量统计系统云小二

    操作场景 Matomo 是一款开源的网站数据统计软件,可以用于跟踪、分析您的网站的流量,同时充分保障数据安全性、隐私性。该镜像基于 CentOS 7.6 64位操作系统,已预置 Nginx、MariaDB、PHP 软件。本文介绍如何使用 Matomo 快速搭建您的网站流量统计系统。 操作步骤 使用 Matomo 应用镜像创建实例 1. 登录 轻量应用服务器控…

    2023年12月9日
  • 腾讯云对象存储Guetzli 压缩

    简介 本文档提供关于 Guetzli 压缩的相关的 API 概览以及 SDK 示例代码。 API 操作描述 开通 Guetzli 压缩 对 Bucket 开通 Guetzli 压缩功能 查询 Guetzli 状态 用于查询 Guetzli 压缩功能是否开启 关闭 Guetzli 压缩 用于关闭 Guetzli 压缩功能 开通 Guetzli 压缩 功能说明 …

    腾讯云 2023年12月9日
  • 腾讯云专用宿主机调整实例配置

    专用宿主机上的实例支持快速方便地调整配置,调节范围受限于该实例所在专用宿主机的剩余资源数量。用户可随时根据自己的需求自由调整实例配置,应对不同时期的业务需求。 注意事项 当被操作实例处于关机状态时,可直接进行控制台变更操作。当被操作实例处于运行中状态时,需要您同意进行强制关机,方可进行调整。 操作步骤 1. 登录 云服务器控制台。2. 找到需要调整的实例,单…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储防盗链

    简介 本文档提供关于存储桶 Referer 白名单或者黑名单的 API 概览以及 SDK 示例代码。 API 操作名 操作描述 PUT Bucket referer 设置存储桶 Referer 设置存储桶 Referer 白名单或者黑名单 GET Bucket referer 查询存储桶 Referer 查询存储桶 Referer 白名单或者黑名单 设置存储…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。