博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx-缓冲原理及优化
阅读量:4548 次
发布时间:2019-06-08

本文共 1167 字,大约阅读时间需要 3 分钟。

一、作用及原理

  作用: 使用缓冲释放后端服务器

  反向代理的一个问题是代理大量用户时会增加服务器进程的性能冲击影响。在大多数情况下,可以很大程度上能通过利用Nginx的缓冲和缓存功能减轻。当代理到另一台服务器,两个不同的连接速度会影响客户的体验:

    1.从客户机到Nginx代理的连接

    2.从Nginx代理到后端服务器的连接

  如果没有缓冲,数据从代理的服务器发送并立即开始被发送到客户。如果假定客户端很快,缓冲可以关闭而尽快使数据到客户端,有了缓冲,Nginx代理将暂时存储后端的响应(缓冲到内存),然后按需供给数据给客户端。如果客户端是缓慢的,允许Nginx服务器关闭到后端的连接。然后,它可以处理数据分配到客户端,以任何可能的速度。

  Nginx默认有缓冲设计,因为客户端往往有很大的不同的连接速度。我们可以用指令调节缓冲行为。可以在HTTP,server或location位置来设置。重要的是要记住,大小size指令是针对每个请求配置的,所以增加超出你需求会影响你的性能。

二、配置项详解

  fastcgi/proxy 缓冲原理和配置是一样的。

  缓冲区的大小主要由 *_buffers 和 *_buffer_size 两个值控制。下面以默认值来讲解。

    *_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区。

    *_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。

  所以总计能创建的最大内存缓冲区大小是 8 * 4K + 4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2 * 4K 共 2 个 buffers。  当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?*_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面

  client_body_buffer_size 处理客户端请求体buffer大小。用来处理POST提交数据,上传文件等。client_body_buffer_size 需要足够大以容纳如果需要上传POST数据。

  fastcgi_buffers,proxy_buffers 处理后端响应。如果这个buffer不够大,会引起磁盘IO。需要注意的是它们有一个上限值,这个上限值受 fastcgi_max_temp_file_size 、 proxy_max_temp_file_size控制。

三、优化

转载于:https://www.cnblogs.com/JohnABC/p/5884587.html

你可能感兴趣的文章
分布式技术一周技术动态 2016.01.17
查看>>
C++ 11 标准 Lambda表达式
查看>>
Angular学习(5)- 数组双向梆定+filter
查看>>
自定义智能缩放,移动的控件
查看>>
揭秘Vue从Virtual DOM生成真实DOM的过程
查看>>
Rxjava 中的源码解析(二)线程切换
查看>>
[译] 愿未来没有 Webpack
查看>>
Python学习教程:这里是Python爬虫的起点,抢占资源啦
查看>>
大数据学习之路之Hadoop
查看>>
大数据学习之路之HBASE
查看>>
centos6.5创建开机自启
查看>>
树莓派自定义创建frp开机启动
查看>>
树莓派通过frp穿透内网
查看>>
FBX SDK环境配置
查看>>
C++配置坑-----openCv环境配置
查看>>
C++学习记录
查看>>
法线贴图
查看>>
http 初识
查看>>
交易已无秘密 一个期货高手的终极感悟
查看>>
离散数学
查看>>