nginx问题:an upstream response is buffered to a temporary file

文章目录
[隐藏]
1. 问题:an upstream response is buffered to a temporary file
2020/07/27 14:43:31 [warn] 2347#2347: *311 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/8/00/0000000008 while reading upstream, client: 192.168.1.1, server: 192.168.1.179, request: "GET /index.php?m=project&f=task&root=32&type=byModule&param=245 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.1.179:8029", referrer: "http://192.168.1.179:8029/index.php?m=task&f=view&taskID=3683"
2.解决:修改nginx.conf配置,增加缓冲区内存大小
fastcgi_buffers 6 512K;     
fastcgi_buffer_size 512K;
3.原因
Nginx会将来自于FastCGI Server的Response 缓存到内存中,然后依次发送到客户端浏览器。缓存区的大小由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共两个buffers。
当response 小于设置的最大内存缓存区(36K)会全部在内存中处理,大于36K时,多出来的数据会写入临时文件中,放到fastcgi_temp目录下边。
error.log会出现:an upstream response is buffered to a temporary file
4.总结
内存缓存区设置太小,nginx会频繁读写硬盘,对性能有很大影响,设置太大也没意义。

相关链接:https://www.cnblogs.com/littlewrong/p/7076459.html

284 人浏览过

发表评论

邮箱地址不会被公开。 必填项已用*标注