Nginx配置文件及优化设置

Nginx优化配置

如何增大Nginx使用CPU的有效时长
  • worker进程数量应当大于等于CPU核数
  • 通过合理的设置worker的进程数量,提高cpu利用率,cpu设置等于或者小于核数
Syntax: worker processes number auto;
Default: worker_processes 1;
Context: main
减入进程间切换

进程间切换是指CPU从一个进程切换到另一个进程或线程:主动切换,被动切换(时间片耗尽)

  • 减入被动进程间切换的配置-设置worker进程优先级

增大worker进程的时间片,通过设置优先级赖减入被动切换。Nice静态优先级:-20 - 19 静态优先级越小越不友好则时间片越长。进程分配的CPU时间片大小也与优先级有关,优先级越高,时间片越长。

Syntax: worker_priority number;
Default: worker_priority 0;
Context: main
  • 减入被动进程间切换的配置-为进程绑定cpu
    nginx默认是没有开启利用多核cpu的配置的。需要通过增加worker_cpu_affinity配置参数来充分利用多核cpu。当CPU在运行的时候,如果一颗CPU始终固定的去运行同一个进程,当用户连接到进程的时候,用固定的CPU响应用户的请求,CPU中有缓存,就可以重复的使用CPU中缓存的数据。
Syntax: worker_cpu_affinity cpumask
worker_cpu_affinity auto [cpumask]; //自动绑定进程与CPU的关系
Default: -;
Context: main
Nginx 事件处理模型优化

Nginx 的连接处理机制在不同的操作系统中会采用不同的 I/O 模型,在 linux 下,Nginx 使用 epoll 的 I/O 多路复用模型,在 Freebsd 中使用 kqueue 的 I/O 多路复用模型 不过这个选项没必要设置,因为nginx会自动选择最有效的方法作为默认项。

Syntax: use method;
Default: —
Context: events
单个进程允许的客户端最大连接数,配置Nginx worker进程最大打开文件数

通过调整控制连接数的参数来调整 Nginx 单个进程允许的客户端最大连接数,更多的worker的connection数量对会占用更多的内存,一般一个connection约232字节,而且event也约96字节,一个连接就是232+96*2

Syntax: worker_connections number;
Default: 1024
Context: events

Syntax: worker_rlimit_nofile number;
Default: -
Context: events
修改用户的最大文件句柄数限制
  • 临时修改 ulimit -HSn limit
  • 永久修改 vi /etc/security/limits.conf
  • -H选项和-S选项分别表示对给定资源的硬限制(hard limit)和软限制(soft limit)进行设置。硬限制(hard limit)一旦被设置以后就不能被非root用户修改,软限制(soft limit)可以增长达到硬限制(hard limit)。
  • 如果既没有指定-H选项也没有指定-S选项,那么硬限制(hard limit)和软限制(soft limit)都会被设置。
网络相关优化设置
  • net.ipv4.tcp_syn_retries = 6
    -主动建立连接时,发SYN的重试次数
  • net.ipv4.ip_local_port_range = 32768 60999
    -建立连接时本地口可用范围
  • net.ipv4.tcp_fastopen :系统开启TFO功能
    • 0 :关闭
    • 1 :作为客户端时可以使用TFO
    • 2 :作为服务器时可以使用TFO
    • 3 :无论作为客户端还是服务器,都可以使用TFO
Nagle算法

-避免一个连接上同时存在大量小报文 . 最多只存在要给小报文 . 合并多个小报文一起发送

  • 吞吐量优先:启用Nagle算法,tcp_nodelay off
  • 低时延优先:禁用Nagle算法,tcp_nodelay on
gzip

nginx中gzip的主要作用就是用来减轻服务器的带宽问题,经过gzip压缩后的页面大小可以变为原来的30%甚至更小,这样用户浏览页面时的速度会快很多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压缩并解析。目前的大多数浏览器都支持解析
gzip压缩过的页面。

语法:gzip on | off;
默认值:gzip off;
作用域:http, server, location, if in location
语法:gzip_min_length length;
默认值:gzip_min_length 20;
作用域:http, server, location
说明:
设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。因为过小的文件内容压缩之后效果不明显,甚至会比不压缩时
更大,所以一般建议长度不小于10001k。
  • gzip_buffers
语法: gzip_buffers number size;
默认值: gzip_buffers 32 4k|16 8k;
作用域: http, server, location
说明:
设置response响应的缓冲区大小。32 4k代表以4k为单位将响应数据以4k的32(128k)的大小申请内存。如果没有设置,缓冲区的大小默认为整个响应页
面的大小。
  • gzip_comp_leve
语法:gzip_comp_level level;
默认值:gzip_comp_level 1;
作用域:http, server, location
说明:
设置gzip的压缩级别,可接受的范围是从19,数字越大压缩率越高,但更消耗CPU,一般设置6即可。
  • gzip_type
语法:gzip_types mime-type ...;
默认值:gzip_types text/html;
作用域:http, server, location
说明:
指定哪些类型的相应才启用gzip压缩,多个用空格分隔。通配符”*”可以匹配任意类型。
不管是否指定”text/html”类型,该类型的响应总是启用压缩。
一般js、css等文本文件都启用压缩,如application/x-javascript text/css application/xml 等。
具体的文件类型对应的mimi-type可以参考conf/mime.types文件。
  • gzip_http_version
语法:gzip_http_version 1.0 | 1.1;
默认值:gzip_http_version 1.1;
作用域:http, server, location
说明:
设置gzip压缩所需要的请求的最小HTTP版本,低于该版本不使用gzip压缩。一般不用修改,默认即可。
  • gzip_disable
gzip_disable “MSIE [1-6]\.”
语法:gzip_disable regex ...;
默认值:—
作用域:http, server, location
说明:
这个指令是在0.6.23版本增加的。
如果请求的”User-Agent”头信息能被指定的正则表达式匹配,则对响应禁用gzip压缩功能。主要是为了兼容不支持gzip压缩的浏览器,比如IE6,不过IE6
早就废弃了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值