2026/08/15 spring AI学习总结 一. Tomcat线程如何配置1. YAML 写法2. 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 请求行的最长时间单位毫秒。默认值20000ms20 秒如果客户端建立了连接但 20 秒内没发送任何数据Tomcat 会主动断开这个连接主要用于防止慢速攻击Slowloris 等二. WebFluxStreamingSentinel使用1. 常用的类总结技术作用RestTemplate同步 HTTP 调用WebClientHTTP 客户端WebFlux非阻塞/响应式编程Mono0~1 个异步结果Flux0~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│▼前端第二版图: