函数计算( FC )是阿里云事件驱动的全托管计算服务, 使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码或镜像。函数计算为您准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。面对 MCP Server 场景,函数计算不仅通过 MCP Runtime 支持了社区开源的 Stdio MCP Server 一键托管到函数计算;还通过亲和性调度解决了 MCP Server Session 会话保持的关键问题;同时函数计算针对 MCP Server 的场景特点,在函数计算已有的毫秒级计费基础上,实现了长连接闲置计费能力,支持部署到函数计算的 MCP Server 实现按用计费,在稀疏调用场景,最高可降低 87% 的 MCP Server 的托管成本。

为什么 MCP Server 可能存在资源闲置问题?

在系列文章首篇 MCP Server 实践之旅第 1 站:MCP 协议解析与云上适配 我们深入解析了 MCP 以及 SSE 协议,该协议通过定义标准化事件类型,实现了客户端-服务端的交互控制及会话保持机制,交互过程如下图所示:

  1. Client端发起一个 GET 请求,建立SSE长连接。(Connection1)
  2. Server端回复event:endpoint类型的事件,将sessionId信息放入data 中返回。(Connection1)
  3. Client端使用第2步返回的sessionId信息发起首个HTTP POST 请求。(Connection2)
  4. Server端迅速响应202,但无内容。(Connection2)
  5. Server端返回第3步请求的实际消息。(Connection1)
  6. Client端使用第2步返回的sessionId发起HTTP POST请求initialized作为确认。(Connection3)
  7. Server端迅速响应202,无内容。(Connection3)
  8. Client端使用第2步返回的sessionId发起HTTP POST请求list tools。(Connection4)
  9. Server端迅速响应202,无内容。(Connection4)
  10. Server端返回第8步请求的实际消息,即工具列表。(Connection1)
  11. Client端使用第2步返回的sessionId发起HTTP POST请求call tool。(Connection5)
  12. Server端迅速响应202,无内容。(Connection5)
  13. Server端返回第11步请求的实际消息,即工具调用结果。(Connection1)

所以,由于 MCP Server 通信协议需要会话保持的特点,一旦初始化,就会建立长连接绑定固定的服务器资源。但绝大多数 MCP Server 的业务流量呈现典型的稀疏性(Sparse Access)与突发性(Burstiness)特征——请求分布高度离散且流量峰谷波动显著,导致服务器资源的实际资源利用率很低,典型场景下图所示:

某用户通过大模型初始化了一个 MCP Server,实现对某文档库的检索能力,大模型会话持续了1小时才关闭,期间总共检索了2次, 资源保持时间是1小时,实际初始化与检索的时间为7.1s,资源闲置比例高达99.8%。在一些复杂的 AI agent 场景, 可能一个会话要连接多个不同用途的 MCP Server,可能产生大量的资源闲置,谁来承担这个闲置成本呢?

函数计算为用户让利,承担了 MCP Server 资源闲置成本

按用计费,是函数计算为用户降本的宗旨,函数计算通过长期对技术的耕耘,已经建立起了三个核心能力:

  • 高密度、多样化混部,实现了计算资源的错峰使用:函数计算有来自不同行业的活跃用户,产生了海量的负载类型,基于阿里云“沙箱容器”及“裸金属服务器”,函数计算实现了计算节点上高密度部署,使得多样化的场景类型可以错峰使用计算资源,提升了服务器整体的能效比;
  • 基于函数级别的资源画像实现主动干预调度,减少资源挤占的隐患:函数计算基于历史数据,为活跃函数建立起精准的资源画像模型,可以识别函数在不同时间段的资源占用情况,基于画像模型,可以主动对占用大量计算资源的函数调度,减少由于计算节点资源挤占,影响请求延时的概率;
  • 百毫秒级的快速弹性及平滑迁移能力,能快速兜底处理资源挤占问题:函数计算具备百毫秒级的弹性及平滑迁移用户负载的能力,在识别到有资源挤占的行为发生时,可以通过平滑迁移快速恢复;

正由于具备这些核心能力,函数计算实现了通过技术降本,所以选择了为用户让利,承担起了 MCP Server 的资源闲置成本。

闲置计费实现的技术内幕

目前函数计算已实现按用计费的能力,如函数计算计费概述所示,按照请求计费的模式是按用计费的典型模式,只有请求执行期间,才会产生费用,无请求执行,实例处于“冻结”状态,冻结持续几分钟便会自动释放资源,不会产生额外的费用;即使您选择预留实例,由于有明确的“冻结”状态来判断闲置,预留实例在无请求执行时仅需要支付内存成本。但由于 MCP Server 的协议会话保持、异步提交及流式返回的特点,在会话持续期间,始终需要保持计算资源的活跃,故无法通过明确的“冻结”状态来减免资源闲置成本,所以函数计算面向 MCP Server 场景,引入了额外的判断闲置的方法,如下所示:

函数计算将 MCP Server 长连接时间划分成多个闲置判断周期,如果某周期实际消耗的 CPU Time 低于某个阈值,则该周期算作闲置,这个阈值的设定,确保了只有发生 Initialize/List Tools/Call Tools 等实际调用时,函数实例才会判断为活跃。

以上述稀疏调用场景为例:

4次实际的动作,只有8秒算做活跃周期,剩余3592秒都处于闲置周期,闲置的周期,在计量上会减免 CPU 费用,只计算内存费用;内存费用参考函数计算计费概述,以2核3GB的配置为例,内存费用仅占18%,整体费用节省:

(1- (8 + 3592 × 18%)/3600),约为82%,如果以2核2GB最低内存比例配置为例,整体费用可降低87%。为了简化对 MCP Server 场景闲置计费的理解,费用节省直接折算成减少 CU 计算时间,无条件的降低,在计量上表现为 CU 计算时间和活跃 vCPU 时间的降低

如何开启 MCP Server 的闲置计费能力?

MCP Server 闲置计费能力主要目标是解决会话亲和性保持造成闲置的问题,当开启会话亲和性后便默认开启闲置计费能力,开启方法参考 MCP亲和性调度

通过函数计算控制台 MCP 运行时开发 MCP 服务或通过 Function AI 创建 MCP 服务时,创建的函数自带 MCP Server 的闲置计费能力:

  • 函数计算控制台:

  • Funciton AI 控制台:

其它场景需要在创建函数时通过参数指定开启:调用 API CreateFunction - 创建函数UpdateFunction - 更新函数,通过 SessionAffinity 字段指定调用请求的亲和策略为“MCP_SSE”,注意:由于 GPU 资源稀缺,对于配置了 GPU 的函数实例,不支持长连接的闲置计费。

另外,对于 Websocket 需要维持长请求的场景,也同步支持了闲置计费能力,无需参数设置默认开启,敬请体验,计费详情可到函数计算-资源用量明细查看。

MCP Server On FC 之旅第四站: 长连接闲置计费最高降低87%成本的技术内幕的更多相关文章

  1. SharePoint Server 2013开发之旅(四):配置工作流开发和测试环境

    工作流这个功能,在SharePoint Server 2013中做了很大的改动.我们可以从微软官方的文档中了解一下大概的情况 http://technet.microsoft.com/zh-cn/li ...

  2. Sql Server之旅——第四站 你必须知道的非聚集索引扫描

    非聚集索引,这个是大家都非常熟悉的一个东西,有时候我们由于业务原因,sql写的非常复杂,需要join很多张表,然后就泪流满面了...这时候就 有DBA或者资深的开发给你看这个猥琐的sql,通过执行计划 ...

  3. asp.net mvc 之旅—— 第四站 学会用Reflector调试我们的MVC框架代码

    我们知道,现在能调试.net程序通常有两个,第一个是ILSpy,还是一个是Reflector,这两个小反编译软件算是我们研究底层代码中所拥有的一把 锋利小尖刀~~~,比如你看到的ILSpy这样的界面图 ...

  4. Javascript之旅——第四站:parseInt中要注意的坑

    前些天信用卡站点要接入一个新功能,不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息 一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效 ...

  5. Sql Server之旅——第五站 确实不得不说的DBCC命令

    原文:Sql Server之旅--第五站 确实不得不说的DBCC命令 今天研发中心办年会,晚上就是各自部门聚餐了,我个人喜欢喝干红,在干红中你可以体味到那种酸甜苦辣...人生何尝不是这样呢???正好 ...

  6. webpack入坑之旅(四)扬帆起航

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  7. Selenium WebDriver + Grid2 + RSpec之旅(四) ----通过RSpec编写测试用例

    Selenium WebDriver + Grid2 + RSpec之旅(四) ----通过RSpec编写测试用例 自动化测试和手工测试一样,是要有测试用例,有检查点和测试结果的,接下来我们通过RSp ...

  8. VSTO之旅系列(四):创建Word解决方案

    原文:VSTO之旅系列(四):创建Word解决方案 本专题概要 引言 Word对象模型 创建Word外接程序 小结 一.引言 在上一个专题中主要为大家介绍如何自定义我们的Excel 界面的,然而在这个 ...

  9. SQL Server 2008性能故障排查(四)——TempDB

    原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB: TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过 ...

  10. JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

    JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...

随机推荐

  1. Elasticsearch搜索引擎学习笔记(三)

    索引的一些操作 集群健康 GET /_cluster/health 创建索引 PUT /index_test { "settings": { "index": ...

  2. Mermaid Live Editor 如何调整方向

    在 Mermaid Live Editor 中,默认情况下,流程图和序列图等都是按照从左到右的方向来布局的.但是,如果你想要创建一个从上到下(纵向)布局的图形,你可以使用 TD(Top-Down,即从 ...

  3. rust学习笔记(8)

    cargo cargo是一个用来帮助控制项目开发的工具 cargo.toml 这是一个用来管理项目的文件 首先是[package]部分 [package] name = "foo" ...

  4. xshell连接Win10下子系统Unbuntu

    自带的ssh server不好用,需要先卸载再安装. 1. 卸载 ssh server sudo apt-get remove openssh-server 2. 安装 ssh server sudo ...

  5. 使用SVM在数字验证码识别中的应用研究课程报告

    第1章 概要设计 1.1 设计目的 支持向量机作为一类强大的监督学习模型,以其出色的泛化能力,在手写数字识别.面部检测.图像分类等多个领域展现出了其优越性.其在处理小样本.非线性及高维模式识别任务中表 ...

  6. Joker 智能开发平台再放大招,新作将彻底重塑开发模式

    -- 突破传统枷锁,引领开发模式全面革新 自前端可视化智能平台重磅发布后,其在行业内的影响力便如涟漪般迅速扩散.凭借着创新的设计理念和过硬的性能表现,这个平台为无数开发者和企业提供了高效且便捷的开发解 ...

  7. docker学习 容器的启动过程

    这一节我们来稍微了解下docker原理性的东西1    docker run -i -t ubuntu /bin/bash输入上面这行命令,启动一个ubuntu容器时,到底发生了什么?大致过程可以用下 ...

  8. post数据到第三方,中文乱码

    1.项目中发现 测试环境 推送正文,数据正常 2.生产到腾讯云之后,中文推送过去乱码,但是post 接口的 时候,指定了 编码格式. 3.后查看日志,发现日志中记录的中文就是乱码 4.排查cs代码文件 ...

  9. 汇编概念辨析(Intel/AT&T syntax、GAS、NASM)

    写在前面 本文并不详细介绍Intel syntax.AT&T syntax.GAS.NASM的具体内容和具体区别,而是从概念辨析的角度说明这些专有名词的含义,以便为初学者扫清疑惑.有兴趣深入了 ...

  10. 【Linux】2.3 Linux目录结构

    基本介绍 linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录. 深刻理解 linux 树状文件目录是非常重要的,这里 ...