【中国观察北京时间2026年08月16日】
AI 应用的访问量突然增长,真正棘手的地方并不是“服务器不够用了”这么简单。对于传统Web应用,流量增加后增加几台CPU服务器,配合负载均衡通常就能解决相当一部分问题。但大模型推理服务的资源结构完全不同:模型权重可能占据数十GB甚至数百GB显存,请求还会随着上下文长度持续消耗KV Cache,GPU计算、显存容量、显存带宽、CPU预处理、网络以及请求调度都可能成为瓶颈。
因此,一个成熟的AI推理系统面对流量暴增时,不能只设置一个“GPU利用率超过80%就扩容”的规则,而应该把请求调度、排队、批处理、GPU显存管理和弹性扩容看成一个整体。
一、AI应用为什么不能像普通网站一样简单扩容
普通网站的请求通常具有相对明确的资源模型。一台服务器处理不了更多请求,就增加服务器数量,再通过负载均衡把请求分散出去。
大模型推理则不同。
假设一台GPU服务器已经加载了一个大型语言模型。新的GPU节点即使已经启动,也不能立即提供服务,因为它首先需要获得模型文件,将模型权重加载到GPU显存,并完成推理框架初始化和预热。
如果模型规模较大,单纯“增加一台机器”可能需要较长时间。
更重要的是,GPU节点之间并不是完全可以互换的。
一个模型可能需要特定容量的显存才能装下。如果模型采用Tensor Parallel等多GPU并行方式,还需要考虑GPU之间的高速互联。于是,AI服务的扩容实际上是:
流量增加 → 推理负载增加 → GPU资源紧张 → 判断瓶颈 → 启动新GPU节点 → 加载模型 → 节点预热 → 加入服务池。
这意味着扩容本身存在延迟。
所以真正成熟的系统往往不能等到GPU已经完全拥堵之后才扩容,而需要根据历史流量、请求队列和延迟趋势提前做出判断。
二、自动扩容真正应该监控什么
GPU利用率当然重要,但它绝不是唯一指标。
例如,一台GPU可能显示计算利用率只有60%,但显存已经接近100%。此时如果大量请求需要较长上下文,新的请求仍然可能因为KV Cache没有足够空间而无法正常运行。
反过来,GPU利用率达到90%,也不一定意味着必须立即增加GPU。如果当前请求马上下降,扩容可能只是浪费计算资源。
因此,大模型推理服务更适合同时观察多个指标:
GPU计算利用率
GPU显存使用率
KV Cache占用情况
请求队列长度
并发请求数
P95和P99延迟
首Token延迟
Token生成速度
Prefill和Decode负载
GPU节点启动时间
当前实例数量和可用容量
其中,P95、P99延迟尤其重要。
平均延迟看起来正常,并不意味着系统没有问题。流量突然增加时,可能只有一小部分请求开始等待,但这些请求的响应时间已经急剧上升。对于在线AI服务来说,这通常比平均GPU利用率更能反映用户实际体验。
三、为什么请求排队是AI系统不可缺少的一层
GPU计算资源永远存在上限。
当瞬时请求数量超过GPU能够处理的能力时,系统有两个选择:
直接拒绝请求,或者让请求进入队列等待。
对于一些非实时任务,例如批量文档分析、图片处理、Embedding生成、视频分析等,排队通常是非常合理的。
但是在线聊天系统不能简单地把所有请求丢进传统消息队列。
用户发送一句问题后,通常希望很快看到首个Token,然后模型继续流式生成。如果请求在队列中等待几十秒,即使最终生成速度很快,用户仍然会认为服务已经“卡死”。
因此,在线LLM服务通常需要更加细致的调度机制。
一个典型结构可以理解为:
用户请求 → 网关 → 调度器 → 等待队列 → GPU推理Worker → 流式返回。
调度器不仅要决定“哪个请求先执行”,还需要考虑请求的上下文长度、预计生成长度、优先级以及当前GPU显存状态。
这也是为什么AI推理系统中的调度比普通Web请求调度复杂得多。
四、Continuous Batching为什么重要
传统批处理通常需要等待一批请求全部准备好,然后一起送入GPU。
这对于LLM并不理想。
因为不同请求的生成长度完全不同。有的请求几百个Token就结束,有的请求可能生成几千甚至更多Token。如果必须等待整个批次全部完成,GPU资源很容易出现空闲。
Continuous Batching,也就是连续批处理,解决的正是这个问题。
系统可以让已经完成的请求退出,同时把等待中的新请求加入正在运行的批次。
因此,GPU并不是简单地:
请求A、B、C全部完成 → 再处理D、E、F。
而更接近:
A、B、C正在生成 → A完成 → D进入 → B完成 → E进入 → C完成 → F进入。
这样能够提高GPU的整体利用率,并提高单位时间能够处理的Token数量。
但Continuous Batching也不是无限制的。
每增加一个并发请求,就可能增加KV Cache占用。上下文越长,KV Cache压力越明显。因此,最终仍然会受到GPU显存容量的限制。
五、KV Cache可能成为流量暴增时最隐蔽的瓶颈
对于Transformer类大模型,生成文本时需要保存此前Token对应的Key和Value,以避免每生成一个新Token都重新计算整个历史上下文。
这些缓存就是KV Cache。
当并发请求增加时,每一个请求都会拥有自己的KV Cache。
因此:
并发数增加 → KV Cache增加。
上下文长度增加 → 单请求KV Cache增加。
生成过程持续 → KV Cache继续占用显存。
这意味着一个模型即使已经成功加载进GPU显存,也不代表GPU还拥有足够的空间处理大量并发请求。
例如,一块GPU可能已经使用了大部分显存加载模型权重,只剩下一部分空间用于运行时缓存。如果突然出现大量长上下文请求,系统可能首先遇到的不是GPU计算能力不足,而是显存容量不足。
因此,自动扩容最好同时考虑:
模型权重占用 + KV Cache占用 + 运行时内存 + 显存安全余量。
单纯观察GPU核心利用率是不够的。
六、扩容以后,为什么服务仍然可能变慢
假设原来有4台GPU服务器,现在增加到8台。
理论上计算资源翻倍。
但实际吞吐量未必翻倍。
原因包括模型加载、网络通信、负载均衡、CPU处理能力以及GPU之间的通信开销。
如果一个模型本身需要多GPU协同运行,那么扩容并不是简单增加独立GPU。
例如一个模型需要4张GPU共同完成推理,那么新增4张GPU可能正好形成一个新的推理实例;但如果GPU之间的互联速度不足,多GPU之间频繁交换数据可能成为新的瓶颈。
因此,GPU扩容需要考虑GPU型号、显存容量、显存带宽以及GPU之间的互联拓扑。
对于大型模型,GPU数量只是资源规模的一部分,GPU之间如何连接同样重要。
七、自动扩容应该和请求队列联动
比较成熟的方案不是:
GPU利用率超过80% → 扩容。
而是建立多指标联动。
例如:
请求队列持续增长;
同时P95延迟超过目标;
GPU显存接近设定阈值;
GPU计算资源长期处于高负载;
那么系统可以判断当前容量已经无法满足需求,并启动新的GPU实例。
反过来,如果新增节点已经启动,队列开始下降,延迟恢复正常,就可以停止继续扩容。
当流量长期下降时,再逐步缩容。
这种机制本质上是一个反馈控制系统:
流量 → 请求队列 → 推理负载 → GPU资源 → 延迟 → 扩容决策。
而不是一个简单的CPU自动扩容规则。
八、为什么AI系统需要“削峰”,而不是无限扩容
从经济角度看,永远通过增加GPU解决问题并不可行。
GPU服务器成本远高于普通CPU服务器。如果遇到短时间的流量尖峰,按照峰值永久配置GPU资源,会造成大量闲置。
因此更合理的方式是:
队列吸收瞬时峰值,弹性扩容处理持续增长。
例如正常情况下系统需要20台GPU服务器,突然出现流量暴增。
如果预计只是几分钟的峰值,没有必要立即增加大量GPU。
可以让一部分低优先级请求进入队列,同时保证关键请求继续运行。
如果发现队列持续增长,而且未来一段时间流量仍然维持高位,则启动GPU扩容。
这样可以在用户体验和基础设施成本之间找到平衡。
九、不同AI任务应该使用不同的资源策略
并不是所有AI任务都应该争夺同一个GPU资源池。
在线聊天、实时语音、图像生成、Embedding、批量文档分析和离线训练的资源特点完全不同。
例如实时聊天更加关注:
首Token延迟、P95延迟和连续生成速度。
批量Embedding更加关注:
单位时间处理的数据量。
离线任务则可能更关注:
GPU成本和总处理时间。
如果把这些任务全部混在一起,一个突然出现的大型离线任务就可能抢占在线服务需要的GPU资源。
因此实际生产系统往往需要按照业务优先级建立不同资源池,或者通过调度策略限制不同任务的资源使用范围。
十、真正成熟的AI弹性系统是什么样的
一个比较完整的架构可以概括为:
用户请求
↓
API Gateway
↓
负载均衡
↓
请求调度器
↓
优先级队列
↓
LLM推理服务
↓
Continuous Batching
↓
GPU Worker
↓
模型权重 + KV Cache
与此同时,监控系统持续收集:
GPU利用率、显存、KV Cache、队列长度、并发数、首Token延迟、P95/P99延迟以及Token吞吐量。
自动扩容系统根据这些指标决定是否增加GPU节点。
新节点启动后完成模型加载和预热,再进入服务池。
流量下降以后,系统则根据冷却时间、最低实例数量和实际负载逐步缩容。
这才是一个真正意义上的AI弹性推理系统。
结语
AI应用面对访问量突然增长时,真正需要解决的并不是简单的“服务器不够用”,而是计算资源、显存容量、KV Cache、请求调度和用户延迟之间的动态平衡。
GPU负责计算,但GPU显存决定了同时能够容纳多少模型状态和运行时数据;请求队列负责吸收瞬时峰值;Continuous Batching负责提高GPU利用率;自动扩容负责应对持续增长的负载;而监控系统则负责判断究竟是哪一种资源正在成为瓶颈。
因此,一个成熟的AI基础设施不会只看“GPU利用率是多少”,也不会简单地在流量增加后不断增加服务器。
真正重要的问题是:
当前到底什么资源先到达瓶颈?
如果是计算能力不足,就增加GPU计算资源;如果是显存和KV Cache成为限制,就需要优化上下文、缓存管理或增加显存容量;如果是请求调度导致排队,则应该优化批处理和调度策略;如果是流量持续增长,则需要提前进行GPU弹性扩容。
这也是大模型基础设施与传统Web服务器最重要的区别之一:AI系统的扩容不是单纯增加机器,而是在计算、显存、并发、延迟和成本之间寻找一个动态平衡点。
AI 应用访问量突然增长怎么办?自动扩容、请求排队与 GPU 资源如何配合
喜欢这篇报道?
使用下面的功能,方便以后继续阅读和分享 MNewsTV
关于文章收藏
收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。
删除收藏请进入「我的收藏」进行管理。
分享 Facebook | X | WhatsApp | LinkedIn
捐助(Paypal): https://www.paypal.me/observeccp 订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP