本文介绍如何在云函数控制台配置基于会话模式的并发管理,实现相同会话标记的请求定向调度到同一个实例上。
说明:
使用限制
仅 Web 函数支持会话亲和能力。
操作步骤
1. 登录 Serverless 控制台,单击左侧导航栏的函数服务。
2. 在函数服务页面上方选择期望创建函数的地域和命名空间,并单击新建,进入函数创建流程。
3. 在新建函数页面,您可以选择“从头开始”或者“使用容器镜像”,函数类型选择 Web 函数。
4. 找到“隔离、并发配置”版块,单实例并发模式选择基于会话。

5. 配置参数说明如下:
配置项 | 说明 | 示例 |
会话 Key 来源 | 用于说明从哪里获取客户端标识,系统根据此标记来决定要调度到同个实例上。可选项:Http Header、Cookie、Query String、MCP SSE、MCP Streamable HTTP,五选一。不同选项支持场景说明如下: Http Header 通过 HTTP 请求头传递客户端会话标识,后台确保相同标识的请求被路由到同一个实例。适用于 WebSocket 协议、gRPC 协议、HTTP 协议。支持客户端自定义会话 ID(SessionId) ,也支持服务端生成。 Cookie 将携带相同 Cookie 信息的请求路由到同一个实例。支持客户端生成会话 ID(SessionId) ,也支持服务端生成。 Query String 客户端在 QueryString 中自定义会话 ID,相同会话 ID(SessionId) 的请求路由到同一个实例。 MCP SSE 基于 MCP SSE 协议规范,确保客户端携带相同会话 ID(SessionId) 的请求始终路由到同一个实例。 MCP Streamable HTTP 基于 MCP HTTP 协议规范,确保客户端携带相同会话 ID(SessionId) 的请求始终路由到同一个实例。 | Http Header |
会话 Key 名称 | 1. Key 用途及命名规则 用途:用于指定会话标识的名称(即 Key),作为会话的唯一标识名称。MCP SSE 来源的 Key 默认是 session_id,MCP Streamable HTTP 来源的 Key 默认是 mcp-session-id,如果服务端有重新定义,可以手动修改匹配服务端的 Key。 命名要求:必须以字母开头;非首字母可包含数字、字母、下划线(_)、中划线(-);长度限制5-40 个字符(含边界值)。 2. Key 对应 Value 生成逻辑及字符要求: 生成逻辑: 来源为 Http Header、Cookie:支持客户端在首次调用时自主生成 Value;若客户端未生成,系统将自动生成。 来源为 QueryString:首次 Value 需由客户端生成。 来源为 MCP SSE、MCP Streamable HTTP:首次 Value 由 MCP 服务端生成。 字符要求: 含数字、字母、下划线(_)、中划线(-)长度限制128个字节。 | session-id |
SSE 路径 | 如果会话 Key 来源选择 MCP SSE,需要填写发起SSE连接请求的路径。 ![]() | 默认/sse,支持修改 |
单实例最大并发会话数 | 单实例在同一时间内能同时处理的最大会话数(包含活跃会话和非活跃会话),默认值为20,最大支持100。 | 20 |
会话最长生命周期 | 从会话创建、使用到最终销毁的全过程。超过生命周期后,服务端将自动销毁会话。最长可设置7天,默认21600秒。 | 21600秒 |
会话最长空闲时间 | 用户在一段时间内没有进行任何操作,导致会话进入空闲状态。超过设置的最长空闲(Idle)时间后,服务端将自动销毁会话。最长可设置1800秒。 | 1800秒 |
单实例最大并发请求数 | 单实例在同一时间内能同时处理的最大请求数,默认为10,最大支持100。 | 10 |
会话空闲超时处理策略 | 如果您开启了“实例安全隔离”,会话空闲超时处理策略可选自动销毁或者自动暂停; 如果您没有开启“实例安全隔离”,会话空闲超时处理策略默认自动销毁。 | 自动销毁 |
调度效果验证
开启会话亲和后,您可以指定会话标记调用函数URL,然后观察在不超过配置的单实例最大并发会话数的前提下,会话请求是否调度到同一函数实例执行。
不同会话来源调用示例
指定不同 HTTP Header 多次调用函数进行测试,以执行 Curl 命令示例如下,请根据您的会话 Key 名称替换 session-key、会话 ID 替换 mySessionId、函数 URL 替换 example 和 regionID 。您可以在目标函数详情页面,选择函数 URL 页签,获取函数 URL 。
curl -H "{session-key}:{mySessionId}" https://{example}.{region}.tencentscf.com
指定不同 Cookie 多次调用函数进行测试,以执行 Curl 命令示例如下,请根据您的会话 Key 名称替换 session-key、会话 ID 替换 mySessionId 、函数 URL 替换 example 和 regionID。您可以在目标函数详情页面,选择函数 URL 页签,获取函数 URL。
curl -H 'Cookie:{session-key}={mySessionId}' 'https://{example}.{region}.tencentscf.com'
指定不同 Query String 多次调用函数进行测试,以执行 Curl 命令示例如下,请根据您的会话 Key 名称替换 session-key、会话 ID 替换 mySessionId、函数 URL 替换 example 和 regionID。您可以在目标函数详情页面,选择函数 URL 页签,获取函数 URL。
curl 'https://{example}.{region}.tencentscf.com?{session-key}={mySessionId}'
可以使用 MCP Inspector 调用函数服务。通过选择对应的 Transport Type,并将函数 URL 增加“/sse”或者“/mcp”后缀配置到URL中,点击“Connect”发起调用。
npx @modelcontextprotocol/inspector

查询调用结果
您可以在函数详情页面的日志查询、会话管理、运行实例上,查看到调用的结果。
注意:
您需要提前开启CLS日志才能进行实例管理和会话管理。
以下用一个例子说明:假如您对同一个会话ID发起了多个请求。

您可以在函数管理 > 日志查询上查看到多个请求都调度到同个实例上。

在函数管理 >会话管理可以看到只有一个会话 ID,并行绑定到一个实例上。

在函数管理 > 运行实例可以看到后台运行了一个实例。

请求状态码说明
状态码 | 错误信息 | 说明 |
429 | MaxConcurrencyLimit | 实例的请求并发数超限(即假如一个实例多并发数配置为20,第21个请求到达会触发该错误码),系统限流拒绝请求。 |
443 | session(xxx) bind's container is paused | 调用一个会话已暂停的容器。 |
| session(xxx) bind's container have been full usage | 调用一个会话并发满容器。 |
| session(xxx) bind's container is unavailable | 调用一个会话已销毁的容器。 |
453 | InvalidArgument | 单实例并发模式=基于会话,用户没有传入会话标记,或者会话标记不符合规范,系统拒绝请求。 |
| SessionPauseErr | 对于暂停状态的会话发起请求,系统拒绝请求。 |