2026/08/15 spring AI学习总结

一. Tomcat线程如何配置

1. YAML 写法:

  1. java代码实现

1. threads.max: 300 --- 最大工作线程数

Tomcat 用来实际处理请求的线程池上限。每个 HTTP 请求到达后,会被分配一个工作线程来执行你的 Controller 逻辑。

  • 默认值:200
  • 你设为 300,意味着最多同时处理 300 个请求
  • 当 300 个线程全忙时,新请求不会立即被处理,而是进入等待队列

2. threads.min-spare: 20 --- 最小空闲线程数

Tomcat 启动时预先创建的线程数量,也是线程池收缩时保留的最低线程数。

  • 默认值:10
  • 你设为 20,意味着即使没有请求,也会保持 20 个线程待命
  • 好处是突发流量来了不用临时创建线程,减少延迟

类比:饭店即使没客人,也至少留 20 个厨师值班。

3. max-connections: 8192 --- 最大连接数

Tomcat 在任意时刻能同时维持的 TCP 连接数上限(NIO 模式下)。

  • 默认值:8192
  • 注意:连接数 ≠ 并发处理数。一个连接建立了,但可能还没发请求,也可能在等线程处理
  • 当连接数达到 8192 时,新连接会被放入 accept-count 等待队列

类比:饭店里最多坐 8192 桌客人。

4. accept-count: 100 --- 等待队列长度

max-connections 满了之后,操作系统层面还能排队等待的连接数。

  • 默认值:100
  • 当连接数 + 等待队列都满了(即 8192 + 100 + 1),新请求会被直接拒绝(连接超时或 Connection Refused)

类比:饭店坐满了,门口还有 100 个小板凳,再多人就只能走了。

5. connection-timeout: 20000 --- 连接超时时间

Tomcat 在接受一个 TCP 连接后,等待客户端发送 HTTP 请求行的最长时间(单位:毫秒)。

  • 默认值:20000ms(20 秒)
  • 如果客户端建立了连接但 20 秒内没发送任何数据,Tomcat 会主动断开这个连接
  • 主要用于防止慢速攻击(Slowloris 等)

二. WebFlux,Streaming,Sentinel使用

1. 常用的类总结

技术 作用
RestTemplate 同步 HTTP 调用
WebClient HTTP 客户端
WebFlux 非阻塞/响应式编程
Mono 0~1 个异步结果
Flux 0~N 个异步结果
SSE 服务端持续向客户端推送数据
Spring AI Streaming 大模型 Token 流式返回

2. 使用WebFlux编程的好处

同步:

线程 ────────────────等待5秒────────────────>

异步:

线程 ──发请求──释放

处理其他请求

响应回来再继续

3. 使用Sentinel的好处

没有保护情况下拖垮服务:

大量请求

大量调用 DeepSeek

大量超时

大量线程/连接占用

你的 Spring Boot

也开始崩

有防护:

请求

Sentinel

判断是否超过阈值

允许 ─────→ DeepSeek

拒绝

Fallback

"AI服务暂时繁忙,请稍后再试"

4. 一张架构图看懂三者交互

第一版图:

用户

POST /ai/chat

Sentinel

┌──────┴──────┐

│ │

正常 限流/异常

│ │

▼ ▼

WebFlux Fallback

│ │

▼ ▼

Spring AI "AI服务繁忙"

DeepSeek

Streaming

┌──────┴──────┐

▼ ▼

token1 token2 ...

│ │

└──────┬──────┘

SSE/Flux

前端

第二版图:

相关推荐
wno7041 小时前
Spring Boot JdbcTemplate配置Druid多数据源
java·spring boot·后端
聊浮游2 小时前
JAVA2026最新全套学习资料、学习路线
java·开发语言·jvm·mysql·spring·maven·idea
MacroZheng2 小时前
完美替代 Navicat!这款内置 AI 的数据库工具,太香了!
java·后端·mysql
SamDeepThinking2 小时前
从REST到gRPC,一个API选型的思考框架
java·后端·程序员
Zane19942 小时前
接口都能写默认实现了,为什么还需要抽象类
java·后端
未秃头的程序猿2 小时前
读Spring AI源码的方法——不是硬啃,是带着问题去翻
java·后端·spring
用户3126874877203 小时前
别再 Thread.sleep 硬等了!并发工具类到底怎么选?
java
Java内核笔记3 小时前
万字长文剖析 Spring Boot 4 自动配置机制源码:从 @EnableAutoConfiguration 到条件装配
java·后端
evans在进步3 小时前
Spring MVC 核心机制详解:全局异常处理、请求跳转与数据绑定
java·spring·mvc