nginx warn upstream response is buffered to a temporary file

赞赏 2017-06-25

导出数据的时候,查看nginx日志,报了一个warn:
[warn] 6281#0: *33631203 an upstream response is buffered to a temporary file /data/app/nginx/fastcgi_temp/9/06/0000000069 while reading upstream。
有时还报:
a client request body is buffered to a temporary file


对于an upstream response is buffered:

加大nginx配置文件中下面两个值: 

fastcgi_buffers 8 4K;
fastcgi_buffer_size 4K;

但是加多大那?

那要看看nginx 的 buffer 机制了: 

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

fastcgi_buffers 8 4K 这样的配置,控制了nginx最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 response时第一个缓冲区的大小,不包含在前者中。所以上面的配置总计允许nginx创建的最大内存缓冲区大小是 8*4K+4K = 36k。

这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个8K的页面,nginx会创建 2*4K 共2个buffers。 

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

[warn] 6281#0: *33631203 an upstream response is buffered to a temporary file /data/app/nginx/fastcgi_temp/9/06/0000000069 while reading upstream  


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

我要导出的文件大约 900k 所以我设置了

fastcgi_buffers 20 64k;
fastcgi_buffer_size 64k;

对于a client request body is buffered to a temporary file: 

增加这个两个值的大小:

client_max_body_size 50m; 
client_body_buffer_size 1024k;
登陆后阅读全文
阅读 2885 赞赏 2 有用 33 没用 0 收藏 0 分享

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

赛蓝翔的头像

赛蓝翔

PHP开发一枚

相关文章

别的域名也能访问我的网站是怎么回事?|Linux下nginx如何禁止空主机头?| 网站IP被恶意解析

Nginx启动报错:Error open() nginx.pid?

nginx 报错: emerg bind to 80 failed 98 address already in use

如何配置,让Apache、Nginx 支持跨域访问?

Nginx 502 bad gateway如何解决

nginx .htaccess配置rewrite伪静态示例

CentOS 6.5下 Nginx 配置 https 服务

Nginx 配置文件中 root 与 alias 指令的区别

Nginx 绑定多个域名的方法

Linux下如何查看Nginx Apache MySQL PHP 的编译参数?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

微信跳一跳刷分攻略

改了php.ini中的open_basedir仍报错open_basedir restriction in effect

推荐 | PHP WEB消息推送框架 web-msg-sender (PHPSocket.IO)

如何准确判断请求是不是搜索引擎爬虫(蜘蛛)发出的请求?(php window linux)

PHP Warning: feof() expects parameter 1 to be resource, null

php Warning: A non-numeric value encountered in

原来这条命令可以让我们快速找到php.ini的位置

换成https后,网站还是没有安全标志或安全小锁?

在百度站长平台如何将http换成https

php file_get_contents() 如何伪造发送 referer?

手机扫一扫
分享文章