Nginx学习笔记(三):Nginx性能调优

作者: 李佶澳   转载请保留:原文地址   更新时间:2018-11-23 19:07:38 +0800

说明

Tuning NGINX for Performance中给出了一些调优建议,调整的不只是nginx参数,还是有系统参数。

系统参数

net.core.somaxconn:内核参数,等待建立的连接的数量,如果连接增长非常快,存在连接无法建立的情况,可以考虑将这个数值增大。如果设置的数值超过512,需要在nginx的listen指令后面添加backlog配置,并设置为相同的值。

 backlog=number
 sets the backlog parameter in the listen() call that limits the maximum length for the queue of pending connections. 
 By default, backlog is set to -1 on FreeBSD, DragonFly BSD, and macOS, and to 511 on other platforms. 

net.core.netdev_max_backlog:内核参数,网卡缓存报文的速度,调大可以提高报文吞吐。

sys.fs.file-max:内核参数,整个系统可以打开的文件数。

nofile:系统配置, /etc/security/limits.conf中设置的用户可打开的文件数。

net.ipv4.ip_local_port_range:内核参数,临时端口范围,如果port数量不足,可以调大,通常设置为1024~65000。

nginx参数

worker_processes:工作进程的数量

worker_connections:每个worker的最高并发

keepalive_requests:一个keep-alive连接中可以包含请求数。

keepalive_timeout:keep-alive长连接的保持时间。

keepalive:与upstream之间缓存的空闲keep-alive连接数量。

proxy_http_version:代理时使用的http协议,默认是1.0,如果使用keep-alive,需要修改成1.1。

proxy_set_header:转发到upstream时,添加的header,如果使用keep-alive,需要设置下面的header:

proxy_set_header Connection "";

access_log:开启访问日志缓存,添加buffer=sizeflush=time设置日志刷新时间,或者干脆关闭访问日志off

send_file:使用send_file指令加速文件读取发送速度,send_file直接在内核态,将文件内容写入socket,不拷贝到用户空间。

limit_conn_zonelimit_conn:限制满足特定条件的连接数量。

limit_rate:限制向每个客户端的传输速率。

limit_req_zonelimit_req:限制请求的速率。

max_conns:到backend的最大连接数。

queue:存放等待被转发的请求的队列长度

使用CacheCompression

参考

  1. nginx documentation
  2. events context
  3. Tuning NGINX for Performance

本文原创首发于网站:www.lijiaocn.com

可以加微信,需备注姓名和方向

QQ交流群

区块链实践互助QQ群:576555864

Kubernetes实践互助QQ群:947371129

Prometheus实践互助QQ群:952461804

Kong/Envoy实践互助QQ群:952503851

Ansible实践互助QQ群:955105412

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: lijiaocn@foxmail.com,备注网站合作 友情链接: lijiaocn github.com