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

│

▼

前端

第二版图:

相关推荐
十年Java程序媛4 分钟前
JVM 基础与 GC 垃圾回收详解|可达性分析、分代模型、垃圾收集器、STW
java·开发语言·jvm·spring boot·后端·面试
2301_322414280417 分钟前
基于SSM框架的在线考试管理系统的设计与实现14750-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·redis·mysql·tomcat·maven·mybatis·ssm
clz131452122 分钟前
RuoYi-Cloud 新建微服务并实现服务间调用(OpenFeign 实战)
java·ruoyi
const_qiu26 分钟前
第四章 06:4.6 统一入口 —— analyze() 能力收束
java·人工智能
她的男孩1 小时前
JAR 全对仍 checksum mismatch:Forge Admin 把 Flyway 从 filesystem 改成 classpath
java·数据库·spring boot
鬼手点金1 小时前
如何选择模型
java·前端·人工智能·git·深度学习
古法老登瞎折腾1 小时前
大数据智能运维实战(三):实现第一个运维 MCP 工具——查询节点与组件状态
java·大数据·运维·人工智能·spring ai·mcp
小蒜学长1 小时前
基于数据挖掘的京东商城商品推荐系统设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·推荐系统·个性化推荐
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于spring boot的医院体检管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
有同事要进步1 小时前
Leecode第68题:x的平方根
java·数据结构·算法