You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx报upstream timed out(10060)但后端Spring Boot服务已收到请求排查

根因分析

报错中的超时时间和抓包看到的1分钟间隔完全匹配Nginx默认proxy_read_timeout配置的60秒阈值。该配置定义了Nginx向上游服务读取响应的最大间隔时间,当上游服务超过60秒没有返回任何响应数据时,Nginx就会主动断开连接并抛出该错误。

常见触发场景

  • Spring Boot默认请求大小阈值过低:默认spring.servlet.multipart.max-request-size通常为2MB,6M原始文件经Base64编码后体积会膨胀33%到8MB左右,超过阈值后服务端会直接拦截请求,不返回响应触发超时
  • 大体积Base64解码阻塞:8MB的Base64字符串解码需要占用大量CPU和内存资源,若Spring Boot服务的JVM堆内存不足、CPU资源被占满,会导致解码过程耗时超过60秒,无响应返回触发超时
  • Nginx请求缓冲区配置过小:默认client_body_buffer_size通常为128KB,8MB的请求会被Nginx先写入临时磁盘文件,磁盘IO性能不足时会拉长整体请求处理周期,触发超时

解决方案

  1. 调整Spring Boot上传配置,在application配置文件中添加如下内容:
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=30MB
  1. 调整Nginx对应站点的配置,添加如下参数:
client_body_buffer_size 20M;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_connect_timeout 60s;
  1. 优化Spring Boot服务JVM参数,将堆内存调整到2GB以上,避免大对象解码时出现GC停顿或者OOM
  2. 可选优化:将Base64编码上传改为multipart/form-data二进制上传,可减少33%的传输数据量,同时省掉服务端编解码的CPU开销,大幅降低超时概率

内容的提问来源于stack exchange,提问作者lannyzhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:45:04