我是iOS开发人员,我的后端都是用Django编写的。我使用gunicorn作为我的HTTP服务器。我有三个工人在一个小EC2实例上运行。
我的iOS应用不需要任何图片或静态内容。最多,我每次请求一次发送1-20个JSON对象。每个JSON对象最多包含5-10个字段。
我对NGINX很新。我听说它可以做代理缓冲。我想为慢速客户端添加代理缓冲,但我不知道用于以下模块的适当特定设置:
proxy_buffers
Syntax: proxy_buffers number size
Default: 8 4k|8k
Context: http server location
Reference: proxy_buffers
proxy_busy_buffers_size
Syntax: proxy_busy_buffers_size size
Default: 8k|16k
Context: http server location
Reference: proxy_busy_buffers_size
proxy_buffer_size
Syntax: proxy_buffer_size size
Default: 4k|8k
Context: http server location
Reference: proxy_buffer_size
我知道如何使用的唯一设置(非常悲伤)如下:
proxy_buffering
Syntax: proxy_buffering on | off
Default: on
Context: http server location
Reference: proxy_buffering
这种失落的灵魂会非常感谢你在这方面的专业知识!
答案 0 :(得分:7)
proxy_buffers
number
定义nginx将创建的缓冲区数量和size
每个缓冲区的大小。当nginx开始从上游接收数据时,它开始填充这些缓冲区,直到缓冲区已满或上游发送EOF
或EOT
。如果满足这两个条件中的任何一个,nginx会将缓冲区的内容发送给客户端。
如果客户端没有足够快地读取缓冲区,它将尝试将它们的内容写入磁盘并在客户端能够接收时发送它们。
获取JSON响应的平均大小。现代磁盘和文件系统甚至可以处理巨大的缓冲区大小,但是您应该使用2的强大功能,并通过在数量和大小之间创建良好的平衡来加速缓冲过程。
proxy_busy_buffers_size
这些缓冲区已经传递到下游但尚未完全发送,因此无法重复使用。该指令限制了这些缓冲区的最大总大小,因此允许使用剩余的缓冲区来读取上游响应。
proxy_buffer_size
始终在使用的主缓冲区。即使您停用了proxy_buffering
,nginx仍会填满此缓冲区,并在其已满或EOF
/ EOT
时立即刷新。
proxy_max_temp_file_size
如果缓冲区已满,则该指令控制可以将多少数据写入磁盘(仍然使用内存缓冲区,因为您需要它们与磁盘通信)。如果所有缓冲区和此文件都已满,nginx将停止从上游读取,并且必须等待下游获取数据才能继续执行相同的过程。