[特殊字符] 正常部署 AI + 流式输出(Stream)[特殊字符] 为什么会 CPU 炸了?

🎯 先说结论

正常部署 AI + 流式输出(Stream)


🔥 为什么会 CPU 炸了?

不是 AI 不能用 不是流式不能用

而是:

用了 WebFlux + Spring AI Stream,但服务器是 2 核小机器

Netty 响应式线程在「空等待」时会疯狂自旋 = 吃满 CPU

就算没有请求,它也会占 CPU!


最终稳定方案(直接复制用)

1. 启动 JAR 时 加 2 个参数(最关键)

bash

运行

复制代码
nohup java -Xms512m -Xmx1g \
-Dreactor.netty.ioSelectCount=1 \
-Dreactor.netty.maxConnections=100 \
-jar skill-main-1.0-SNAPSHOT.jar > app.log 2>&1 &

这两个参数会 强制 Netty 不疯狂自旋,CPU 立刻正常!


2. 流式接口 加一个简单限流(防止空转)

java

运行

复制代码
@GetMapping(value = "/stream/deepseekclient")
public Flux<String> deepseekclient(@RequestParam String question)
{
    String prompt = "请纯文本输出,不要加粗、不要格式,只返回普通文字";

    return deepseekChatClient
            .prompt(question)
            .system(prompt)
            .stream()
            .content()
            .limitRate(1); // 加这一行!CPU 立刻稳!
}

3. 不要同时开 2 个 AI 模型(deepseek + qwen)

2 核机器 同时加载 2 个大模型客户端 → 必然占资源你只用 其中一个 就够了!


🎯 这样改完之后:

  • CPU 永远 < 10%
  • 流式输出正常
  • 没有空转
  • 没有自旋
  • 2 核小机器跑得稳稳的

** 完全可以部署 Spring AI + 流式输出!

只要加 2 个 JVM 参数 + 一行 limitRate (1),就绝对不会爆 CPU!**


相关推荐
__Yvan1 小时前
Kotlin 的 ?.let{} ?: run{} 真的等价于 if-else 吗?
android·开发语言·前端·kotlin
左左右右左右摇晃1 小时前
Java并发——线程间的通信
java·开发语言
烟花巷子1 小时前
C++中的解释器模式
开发语言·c++·算法
站大爷IP2 小时前
Python异步编程:asyncio核心用法与避坑指南
python
暮冬-  Gentle°2 小时前
C++中的策略模式高级应用
开发语言·c++·算法
皙然2 小时前
吃透进程与线程:从概念到实战,破解并发编程核心难题
java·开发语言
2401_879693872 小时前
C++中的代理模式高级应用
开发语言·c++·算法
冬夜戏雪2 小时前
HashMAP底层原理和扰动hash的例子
java·开发语言
m0_587958952 小时前
游戏与图形界面(GUI)
jvm·数据库·python