nginx fastcgi buffers影响页面输出数据大小记录

it2022-05-09  21

一台测试服务器由于没做fastcgi_buffer单独设置,在跑一个显示10w条数据的循环输出时只能显示4700-5200条记录

<?php $str = ''; for($i = 0; $i < 100000;$i++) { //echo $i."<br>"; $str .= $i."<br>"; } echo $str; ?>

访问测试得到数据不完整,查看nginx手册后发现原因在于fastcgi_buffer设置

增加 fastcgi_buffers 256 128k;数据显示正常

关于这个参数的解释:

fastcgi_buffers

语法:fastcgi_buffers the_number is_size; 默认值:fastcgi_buffers 8 4k/8k; 使用字段:http, server, location 这个参数指定了从FastCGI进程到来的应答,本地将用多少和多大的缓冲区读取。fastcgi_buffers可以设置为你的FastCGI返回的大部分应答大小,这样可以处理大部分的请求,较大的请求将被缓冲到磁盘。如果想关闭对所有请求道磁盘的缓冲,可以将fastcgi_max_temp_file_size 设置为0。fastcgi_buffer等于:fastcgi_buffer_size + the_number * is_size如果一个fastcgi应答为12k,那么fastcgi_buffers 64 4k将分配3个4k的buffer。这便是为什么fastcgi_buffers有两个参数,而fastcgi_buffer_size(用于应答头与应答的第一部分)只有1个参数,在fastcgi_buffer_size被清空后,它们和fastcgi_buffers一起被使用。例如:

转载于:https://www.cnblogs.com/cycsa/p/3287075.html


最新回复(0)