详情页标题前

腾讯云云函数(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折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

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

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

相关推荐

  • 腾讯云云直播服务地区相关

    云直播域名加速区域支持哪些地区? 云直播具有全球加速功能,可根据使用地区选择适合的加速区域。 播放域名加速区域类型 可选限制区域类型 备注 中国大陆 中国大陆 若选择加速区域为中国大陆时,仅支持对中国大陆区域进行带宽封顶限制。 中国港澳台地区及海外地区 中国港澳台地区及海外地区 若选择加速区域为中国港澳台及海外地区时,仅支持对中国港澳台及海外区域进行带宽封顶…

    腾讯云 2023年12月9日
  • 腾讯云CVM服务器Red Hat Enterprise Linux 镜像使用指引

    如何申请腾讯云上使用 Red Hat Enterprise Linux 镜像? Red Hat Enterprise Linux 镜像处于内测阶段,您可通过 内测申请 获取使用权限。 Red Hat Enterprise Linux 镜像提供哪些版本?支持哪些实例类型? 说明您在购买云服务器 CVM 时,选中已经通过 Red Hat Enterprise L…

    腾讯云 2023年12月9日
  • 腾讯云容器镜像服务从自建 Harbor 同步镜像到 TCR 企业版同尘

    操作场景 当用户将在 IDC 内自建的容器集群迁移至云上容器服务时,也可选择将自建的容器镜像托管服务一同迁移至云上进行托管。将自建的镜像仓库服务迁移至腾讯云容器镜像服务 TCR 后,一方面减少了用户自行搭建及维护的运维管理成本,并提供云上专业稳定的托管服务及技术支持。另一方面实现了与云上容器服务的联动使用,用户可享受容器上云的一致性使用体验,可使用容器集群内…

    腾讯云 2023年12月9日
  • 阿里云负载均衡压力测试的方法-云淘科技

    四层负载均衡采用开源软件LVS(Linux Virtual Server)结合Keepalived的方式实现负载均衡,七层负载均衡由Tengine实现负载均衡。 压力测试建议 在进行压力测试时,配置建议如下: 压测负载均衡转发能力建议使用短连接。 一般来说压测除了验证会话保持和均衡性等功能外,主要是验证负载均衡的转发能力,因此使用短连接比较合适,用于测试负载…

    阿里云负载均衡 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云容器服务使用集群审计排查问题同尘科技

    使用场景 当发生人为误操作、应用出现 bug、恶意程序调用 apiserver 接口,集群资源会被删除或修改。此时可通过集群审计功能记录 apiserver 的接口调用,即可根据条件检索和分析审计日志找到问题原因。本文介绍了集群审计功能的具体使用场景及使用示例,您可参考本文开始使用集群审计功能。 注意本文仅适用于容器服务 TKE 集群。 前提条件 登录容器服…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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