Nginx an upstream response is buffered to a temporary file

1.错误日志:warn:an upstream response is buffered to a temporary file

解决办法:增加fastcgi_buffers 8 4K;     fastcgi_buffer_size 4K;

2. a client request body is buffered to a temporary file

解决办法:增加client_max_body_size 2050m;     client_body_buffer_size 1024k;

Nginx 的 buffer 机制:

对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。

比如如下配置:

fastcgi_buffers      8 4K;
fastcgi_buffer_size  4K;

fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 8*4K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2*4K 共 2 个 buffers。

当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。同时你会在 error.log 中看到一条类似 warning:

2010/03/13 03:42:22 [warn] 3994#0: *1 an upstream response is buffered to a temporary file
/usr/local/nginx/fastcgi_temp/1/00/0000000001 while reading upstream,
client: 192.168.1.111,
server: www.xxx.cn,
request: "POST /test.php HTTP/1.1",
upstream: "fastcgi://127.0.0.1:9000",
host: "xxx.cn",
referrer: "http://xxx.cn/test.php"

显然,缓冲区设置的太小的话,Nginx 会频繁读写硬盘,对性能有很大的影响,但也不是越大越好,没意义.

时间: 2024-11-05 16:10:10

Nginx an upstream response is buffered to a temporary file的相关文章

nginx+tomcat 报错:『an upstream response is buffered to a temporary file 』

一.过程描述: 访问新项目网站发现有静态资源获取failed,图片经常无法显示,刷新偶尔图片能显示出来. 查看nginx日志,有error.log报错: [2017/07/21 22:53:12 [warn] 22402#0: *484 an upstream response is buffered to a temporary file /var/tmp/nginx/proxy//6/01/0000000016 while reading upstream, client: 106.121.

Nginx warn:an upstream response is buffered to a temporary file

我通过nginx下载文件,error.log中出现如下警告日志:warn:an upstream response is buffered to a temporary file  . 虽然网上各种例子都是通过增加fastcgi_buffers       和fastcgi_buffer_size来解决此问题. 然而,buffer总有到顶的时候. 通过搜索,以下这篇文章讲的最透彻. 记一次下载大文件存在数据异常问题排查 原文地址:https://www.cnblogs.com/huanghong

an upstream response is buffered to a temporary file

今天调试nginx+tomcat 在登录的时候 某个用户无法调用,查看nginx报错如下: 经网络查询 发现是请求头过大导致,修改nginx配置文件即可 fastcgi_buffer_size 512k;fastcgi_buffers 6 512k;fastcgi_busy_buffers_size 512k;fastcgi_temp_file_write_size 512k;

Nginx 中 upstream 机制的实现

概述 upstream 机制使得 Nginx 成为一个反向代理服务器,Nginx 接收来自下游客户端的 http 请求,并处理该请求,同时根据该请求向上游服务器发送 tcp 请求报文,上游服务器会根据该请求返回相应地响应报文,Nginx 根据上游服务器的响应报文,决定是否向下游客户端转发响应报文.另外 upstream 机制提供了负载均衡的功能,可以将请求负载均衡到集群服务器的某个服务器上面. 启动 upstream 在 Nginx 中调用 ngx_http_upstream_init 方法启动

nginx的buffered to a temporary警告

nginx日志报a client request body is buffered to a temporary file 这个意思是客户全请求的文件超过了nginx的缓存区大小,nginx将内容写入了硬盘. 增加:client_body_buffer_size大小 如:client_body_buffer_size 2048k;

a client request body is buffered to a temporary

error: 2018/09/27 11:29:25 [warn] 4677#0: *9932666337 a client request body is buffered to a temporary file /data/apps/openresty//nginx/client_body_temp/0000565910, client: 100.116.251.28, server: driver.lenth.com.cn, request: "POST /api/v1/driver/lo

Nginx专题: upstream模块和缓存的简单使用

Nginx专题: upstream模块和缓存的简单使用 前言: 本文接着上篇Nginx专题: 从编译安装到URL重写来介绍Nginx的负载均衡模块使用方法, 本文的实验没有考虑大多数情况, 例如两个web服务器之间的数据同步等, 主要写Nginx如何作为负载均衡器使用并且缓存 实验拓扑 实验环境 主机 IP地址 功用 lb.anyisalin.com 172.16.1.2 负载均衡并缓存静态资源 web1.anyisalin.com 172.16.1.3 提供web服务 web2.anyisal

nginx的upstream目前支持5种方式的分配

Nginx nginx的upstream目前支持5种方式的分配 FROM: 转载 1 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器, 如果后端服务器down掉, 能自动剔除. 2 weight 指定轮询几率, weight和访问比率成正比, 用于后端服务器性能不均的情况.例如: 1 2 3 4 upstream bakend {     server 192.168.0.14 weight=10;     server 192.168.0.15 weight=10; } 3 ip_

nginx的upstream目前支持5种方式的分配(转)

nginx的upstream目前支持5种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. 例如: upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 3.ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问