tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

函数并发管理实践

PDF
聚焦模式
字号
最后更新时间: 2024-12-02 21:04:04

操作场景

腾讯云 Serverless 云函数已上线并发管理能力升级版,该升级版提供3个维度的并发额度管理功能。通过该功能,可以获得更强的函数并发管理控制权限,无需再等待申请云函数配额即可自行根据业务需求快速调整。
说明
目前 函数并发 管理功能已上线,函数可以配置 最大独占配额。另外 预置并发 功能目前处于内测阶段,如需体验您可以提交工单申请开通此功能。
未使用并发管理功能前,一个云函数默认具有300的并发数量上限。针对使用量较小的低频业务,300并发值已足够满足业务使用。但遇到业务量上涨、支撑大型运营活动等大并发场景,开发者则需提交工单申请提升函数并发额度,该解决方案存在以下3种情况:
业务每遇到一次大并发,就需要联系腾讯云申请提升云函数配额,时效性弱。
申请等待周期时会导致上涨的业务部分有损。
在评估量级时,可能会因评估不足而未通过,导致需要再次申请,效率较低。
本文将为您全方位介绍并发管理功能,并针对多种使用场景提供配置建议。

功能介绍

并发能力升级

相对于原有的函数默认固定并发值,云函数新上线的并发管理能力,有以下方面优化:
开放单一函数的并发调整,用户可自行控制并发数。
并发额度由单一的函数维度转移到账号维度。
账号默认具有一定的并发额度,由账号下的函数所共享,无需单独为其中一个大并发函数申请额度。
通过并发管理能力,当前账号维度的并发配额为128000MB,即可支持1000个128MB配置的函数实例同时运行。用户无需再申请提升配额,即可获得比调整前更高的一个并发额度,用于支撑上涨的业务。云函数额度变化如下图所示:


内存和并发额度的关系

当前并发额度按内存进行计算,配置内存大的函数,并发运行时占用的额度多,而配置内存小的函数在多并发运行时占用的额度小。
由于函数服务的资源用量计费项和函数的配置内存强相关,如需通过内存进行额度控制,建议您针对业务选择适合的函数内存,可针对整体支出进行有效控制。内存变化如下图所示:


实践建议

并发使用场景建议

一个账号下有多个业务同时使用云函数进行支撑时,云函数的并发配额则需要进行按需调度。根据不同的业务特性来进行合理的设置。本文分别从不同的业务类型、特点及要求进行分析:
业务类型
业务特点
业务要求
前端业务
存在波峰波谷
保障用户体验,要求加载速度快,可以有一定的错误容忍度
数据处理业务
平稳运行波动不大
不能接收延迟、波动或失败
运维任务
定时任务,偶尔运行一次
无需投入过多关注,运行正常即可
视频处理业务
并发量不大但计算量复杂、计算时间长
接受按需调度,失败时能自动运行即可
根据不同的业务特性、容错额度、业务波动情况、时延要求,即可按照不同的场景进行不同的配置。上述几项业务中,并发配置建议如下:
前端业务
数据处理业务
运维任务
视频处理业务
针对要求加载速度快、存在波峰波谷的前端业务,可以为函数配置一定量的预置额度。例如,按最大使用量的60%来设置,但同时不配置函数的最大独占配额,确保在高峰到来时能充分利用总配额。云函数额度变化如下图所示:

针对波动不大但是容错低的数据处理业务,可以为函数配置一定量的最大独占配额,确保其他业务不会使用共享额度导致数据处理业务的问题。云函数额度变化如下图所示:

针对要求不高、定时运行的运维任务,可以不做任何配置,使用账号维度的配额处理即可。
针对计算量大且按需排队处理任务的视频处理业务,可以配置一定的预置额度,让业务跑满并发额度,充分利用和控制好计算资源。云函数额度变化如下图所示:


最大独占配额处理

账号级别的额度由账号下的多个函数之间共享,在多个函数同时运行的情况下,因为流量突增、业务上涨导致并发增高的函数在占用完全部空闲额度后,可能会与平稳运行的函数产生冲突。
针对上述场景,有以下两种解决方案:
解决方案1(推荐):最大独占配额配置,通过将部分额度分配给具体函数,来保障具体函数的运行可靠性。
解决方案2:通过购买更高规格的 套餐包 来获得更高的并发额度,以满足业务量上涨带来的并发上涨。

最大独占配额配置示例

本文以解决方案1(最大独占配额配置)为例详细介绍如何使用最大独占配额:
示例场景:在同个账号下,函数 A 提供 H5 页面用于秒杀的运营活动,函数 B 在进行后台的流式数据处理。在 B 函数启动300并发进行业务处理时,运营活动会受限于 A 函数,最多仅能运行700并发。而在此时函数 A 的业务压力下,如果 B 函数也面临业务量上涨,将无配额可用导致无法启动更多实例。云函数额度变化如下图所示:

示例配置:在上述示例中,如需保证 B 函数数据处理流程的可靠性,可以为 B 函数设置到350的最大独占配额。此时,该额度将从账号维度划给 B 函数单独使用,而运营活动所使用的 A 函数将仅可以最大使用650并发的额度。函数 B 在设置到350的最大独占配额额度后,在业务持续上升后,最大也仅可使用到配置的额度,即使账号维度的额度仍然有剩余,B 函数也无法使用。云函数额度变化如下图所示:

通过最大独占配额的配置:
可以保障函数正常运行,避免多个函数共享额度时,由于其他业务的函数占用导致本函数无法运行产生损失。
定义了函数的运行额度上限。
最大独占配额配置建议:针对函数的并发管理控制,可以基于业务来进行更精细的控制,您可参考以下3点建议进行配置:
针对开发测试阶段的函数,由于请求量小、无业务压力、并发极少,可以不配置最大独占配额而仅仅使用账号维度的共享额度。
针对稳定运行的函数,通常可以确定并发量,浮动范围不会很大,可以为该函数配置有一点余量的最大独占配额,来保障函数的额度不受共享的影响。
针对运营活动、有可能突增并发的函数,可以利用账号维度的高额度,来充分利用和支撑业务爆发。


相关说明

当前预置额度设置在函数的版本上,是从账号维度的并发配额或函数上的预置额度扣减而出。
通过配置预置额度可以预设启动所需量的并发实例,完成实例的初始化并等待事件发生。针对函数的请求将不会有冷启动时间,可直接在已完成准备、初始化完成的实例中得到运行。
针对时延敏感的业务(例如前端的 SSR 页面响应)、或是初始化时间较长的业务(例如 AI 推理的模型加载过程),通过为函数配置上一定的预置可以保障业务更好的运行。
同时,预置的配额并非实例并发的上限,在业务量上涨到超过已经预置的实例可以承载的最大量时,云函数仍会根据函数的预置额度或者账号配额,拉起更多的实例来支持业务运行。云函数额度变化如下图所示:


最大独占配额其他用法

对业务的限制或关停同样可以通过最大独占配额来配置。在突发紧急事项时,例如漏洞攻击、循环调用失控等,为避免出现重大损失,可以通过配置最大独占配额,将额度控制在极小的值以避免运行失控,甚至可以配置为0关闭函数的运行,详情请参见 最大独占配额。配置如下图所示:


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈