Web 函数请求并发管理概述

最近更新时间:2025-09-30 14:18:42

我的收藏
随着云函数业务场景的拓展,原有基于请求的并发模式已难以满足 WebSocket、gRPC 及 HTTP 长轮询等强会话依赖场景,因此新增了基于会话的并发模式,实现对长连接及会话状态的维护。

单实例并发模式概述

基于请求的调度模式

客户端发起请求时,云函数基于单个“请求”去进行底层实例的分配,一个实例可能处理任意的一个或者多个请求。


请求单并发

默认情况下,在调用函数时,云函数会分配一个并发实例处理请求或事件。函数代码运行完毕返回后,该实例会处理其他请求。如果在请求到来时,所有实例都在运行中,云函数则会分配一个新的并发实例。一个并发实例同一时刻仅处理一个事件的运行逻辑,保障每个事件的处理效率和稳定性。

请求多并发

在大多数情况下,请求单并发都是值得推荐使用的模式,无需在写代码时考虑多个请求同时处理带来的典型并发难题,例如线程安全、阻塞调用、异常处理等。
而在 Web 应用中,典型的业务场景是 IO 密集型——函数内访问数据库或其他系统的接口等下游服务,会有较多时间在等待这些下游服务响应。这种等待一般都是在做 iowait,不消耗 CPU,此时,如果开启了请求多并发,让一个实例可以同时处理多个请求,则可以更充分利用单个实例的 CPU 资源。
Web 函数目前已经支持 开启请求多并发 配置,您可以根据业务需要进行启用和配置。请求多并发支持自定义静态并发智能动态并发两种模式。
自定义静态并发
启用后,当同时有多个请求,将不超过指定并发值的请求调度到同一函数实例内执行。并发增多,将增加函数实例的CPU、内存等消耗,建议配合压力测试进行合理设置,避免函数执行异常。目前支持的并发范围为 2~100 并发。
智能动态并发
启用后,在函数实例负载允许的情况下,智能动态调度更多请求到同一函数实例内运行。将于后续推出,敬请期待。

基于会话的调度模式

客户端发起请求时,云函数会将相同会话标记的请求定向调度到同一个实例上。


请求并发优势

在 IO 密集型场景中,如 WebSocket 长连接业务,可减少计费执行时长,节省费用。
多个请求并发在同一个实例中可复用数据库连接池,减缓下游服务压力。
请求并发密集时,多个请求只需要一个实例进行处理,无需拉起多个实例,从而降低实例冷启动几率,降低响应延迟。