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

Nginx上传超过800M文件报错:读取上游响应头时提示空间不足

故障原因
  • 你看到的warn日志为Nginx的正常行为:只要上传请求的请求体大小超过client_body_buffer_size配置的阈值,Nginx就会将请求内容暂存到磁盘临时文件,无论最终上传成功或失败都会触发该告警,不属于故障原因。
  • 实际故障的核心是Lua FastCGI处理进程的临时文件存储空间不足:
    • Nginx的临时缓冲目录/usr/local/openresty/nginx/client_body_temp/位于根分区,剩余可用空间为5.6G,Nginx层面不会触发空间不足问题。
    • Lua上传处理逻辑默认会将接收的文件先缓冲到/tmp目录,而你的/tmp是基于tmpfs内存文件系统挂载的,对应tmpfs容量为643.9M,叠加系统交换分区的可用空间,刚好可以支撑707M左右的文件存储,一旦文件超过800M,tmpfs+swap的总可用空间不足以存放临时文件,就会返回Not enough space错误。
解决方案
  • 方案1:修改Lua上传逻辑的临时文件存储目录,指向磁盘分区(如/var/tmp或根分区下的其他自定义目录),避开tmpfs的/tmp目录,即可使用根分区剩余的5.6G空间。
  • 方案2:调整tmpfs的挂载容量,修改/etc/fstab中tmpfs挂载/tmp的配置,将size参数调整为业务需要的大小(如2G),执行mount -o remount /tmp即可生效。
  • 方案3:可在Nginx配置中添加client_body_in_file_only clean;参数,让Nginx将完整的请求体文件直接传递给Lua进程,跳过Lua层的临时文件缓冲逻辑,直接操作Nginx生成的临时文件。
  • 可选优化:调整client_body_buffer_size参数到合理值(如10M),减少小文件上传时的磁盘写入次数,也可以降低该warn日志的触发频率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03