Nginx参数配置相关

by:授客 QQ1033553122

目的:

对Nginx配置的点滴学习总结,主要目的在于分析Nginx与性能相关的一些参数设置,以便性能调优时选择最优配置

 

环境:

$ cd /usr/local/nginx/sbin/

$ ./nginx -v

nginx version: nginx/1.8.0

 

配置文件说明:

# cat /usr/local/nginx/conf/nginx.conf

# 使用的用户和组

#user  nobody;

说明:

语法:user user [group];

默认值: user nobody nobody;

# 定义工作衍生进程(worker processe)数

worker_processes  1;

说明:

语法:worker_processes number | auto; number:指定进程数量,auto:自动调整为可获取的CPU核数

默认值:worker_processes 1;

worker_processes的最佳值依赖很多因素,包括(但不局限于)CPU核数,存储数据的硬盘驱动数量,负载模式。如果拿捏不定的话,设置为可获取的CPU核数或者auto。

1.3.8和1.2.5版本开始,才支持auto参数

参考连接:

http://nginx.org/en/docs/ngx_core_module.html#worker_processes

nginx有一个主进程和一些工作进程(Worker processes)。主进程主要用于读取和评估配置,维护工作进程。工作进程真正执行请求的处理。nginx采用基于事件的模型(event-based model)和依赖操作系统的机制有效的分发请求到不同的工作进程中。

参考连接:

http://nginx.org/en/docs/beginners_guide.html

# [ debug | info | notice | warn | error | crit ]

# 可以在下方直接使用 [ debug | info | notice | warn | error | crit ]  参数

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

说明:

语法:error_log file [level];

默认值:error_log logs/error.log error;

配置日志。如果没指定日志文件和日志级别,则使用默认文件和默认级别。

第一个参数:file - 定义存储日志的文件,建议存储路径:/var/log/nginx.error_log;stderr - 选择标准错误文件;可通过指定”syslog:”前缀配置日志记录到sysLog,指定“memory:” 前缀和buffer大小来配置日志记录到循环内存缓冲区,这个通常用于调试,比如 error_log memory:32m debug;

第二个参数: 定义日志级别,默认为error,可以是以下参数之一:

debug, info, notice, warn, error, crit, alert, 或emerg。所列日志级别按严重程度升序排序。指定某个日志级别后,级别在其之后(更严重级别)的日志也会被记录。比如指定了warn,那么error, crit, alert, emerg级别的日志都会被记录。

如果需要调试日志,编译nginx时需要携带 --with-debug选项编译,更多查看 A debugging log

参考连接:

http://nginx.org/en/docs/debugging_log.html#memory

http://nginx.org/en/docs/ngx_core_module.html#error_log

# 指定 pid 存放的路径,建议:pid /var/run/nginx.pid;

#pid        logs/nginx.pid;

events {

# 设置可以被单个工作进程打开的最大并发连接数

worker_connections  1024;

}

设置可以被单个工作进程打开的最大并发连接数。需要注意的是,该设置包含了所有的连接(比如和代理服务的连接),不仅仅是同客户端的连接。另外,实际并发连接数不能超过当前可打开最大文件描述符数限制,可通过修改work rlimit nofile来修改当前可打开最大文件描述符数限制。如下:

worker_processes  1;

worker_rlimit_nofile 65535;

说明:

语法:worker_rlimit_nofile number;

修改工作进程可打开的文件描述符数。用于不重启main进程的情况下,增加可打开的文件描述符数。number的值不能大于操作系统的进程能打开的最大的文件句柄数

events 中还可以指定连接处理方式,如下

events {

worker_connections  1024;

# 指定连接处理方式,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] ;

use kqueue;

}

说明:

语法: use method;

注意,通常没必要显示指定连接的处理方式。Nginx会自动采用最有效率的连接方式。

语法: accept_mutex on | off;

默认值: accept_mutex off;

如果开启accept_mutex,worker进程将轮流接收新的连接。否则,所有进程都会收到新连接的通知,这样,如果果新连接数量很少的情况下,可能会导致一些工作进程浪费系统资源。

对于支持EPOLL除外标识的系统,或者使用reuseport(listen 后面携带reuseport选项),没必要开启accept_mutex。(There is no need to enable accept_mutex on systems that support the EPOLLEXCLUSIVE flag (1.11.3) or when using reuseport.

1.11.3版本之前,默认值为on

参考连接:

http://nginx.org/en/docs/ngx_core_module.html#worker_connections

http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile

http://nginx.org/en/docs/events.html

http://nginx.org/en/docs/ngx_core_module.html#accept_mutex

http {

include       mime.types;

default_type  application/octet-stream;

# 设置日志格式

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                  '$status $body_bytes_sent "$http_referer" '

#                  '"$http_user_agent" "$http_x_forwarded_for"';

更多详情参考:http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format

# 设置访问日志,如果不必要的话,可以设置关闭 access_log off;让读取磁盘IO操作更快

#access_log  logs/access.log  main;

更多详情参考:http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log

# 让sendfile()起作用,建议开启

sendfile        on;

# 仅在 sendfile开启的情况下使用tcp_nopush

#tcp_nopush     on;

更多详情参考:http://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nopush

# tcp_nodelay,send_lowat 在默认配置中是没有体现的

tcp_nodelay  on;

语法:tcp_nodelay on | off;

默认值:tcp_nodelay on;

开启、禁用TCP_NODELAY选项。该选项仅在连接处于keep-alive状态下使用。

参考连接:http://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay

send_lowat       12000;

说明:

语法: send_lowat size;

默认值: send_lowat 0;

如果size设置为非0值,nginx将通过使用kqueue的NOTE_LOWA标识或SO_SNDLOWAT选项尽量减少send操作次数

在Linux、Solaris、Windows上,该指令被忽略

参考连接:http://nginx.org/en/docs/http/ngx_http_core_module.html#send_lowat

#keepalive_timeout  0;

keepalive_timeout  65;

说明:

语法:keepalive_timeout timeout [header_timeout];

默认值:keepalive_timeout 75s;

第一个参数:设置keep-alive客户端连接在服务器端保持open状态时间,超过这个时间服务器将关闭连接。如果设置为0,那么禁用keep-alive客户端连接。

第二个参数:可选参数,在响应头头域设置一个响应头Keep-Alive: timeout=time,其中time等于header_timeout。IE浏览器会在大致60s后自动关闭keep-alive连接。

这里如果设置时间太长,连接长时间不关闭,而导致连接太多,占用过多资源,所以值得根据具体情况设置。

参考连接:    http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout

# 可以考虑补充以下指令

reset_timeout_connection on;

语法:reset_timedout_connection on | off;

默认值:reset_timedout_connection off;

帮助避免已经关闭的socket长时间处于FIN_WAIT1状态并占用缓冲区(This helps avoid keeping an already closed socket with filled buffers in a FIN_WAIT1 state for a long time)。也就说开启后,可以避免不必要的资源占用。

参考连接:http://nginx.org/en/docs/http/ngx_http_core_module.html#reset_timedout_connection

语法: send_timeout time;

默认值:send_timeout 60s;

设置传输响应体到客户端的超时时间。这里的超时时间是指两次成功写操作之间的时间间隔。在这个时间范围内,客户端没接收到任何数据,那么连接被关闭。

参考连接:http://nginx.org/en/docs/http/ngx_http_core_module.html#send_timeout

#gzip  on;

说明:

语法:gzip on | off;

开启、禁用压缩请求响应体(response),开启后可大大减少传输数据的大小,建议开启。可以配合其它gzip_xxxx设置使用。

gzip on;

gzip_min_length  1100;

gzip_buffers     4 8k;

gzip_types       text/plain;

语法: gzip_min_length length;

默认:gzip_min_length 20;

设置仅响应头Content-Length的值超过gzip_min_length长度的响应体(response)才进行压缩。建议:如果请求小于1000字节,最好不要压缩它

参考连接:http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_min_length

语法:gzip_types mime-type ...;

默认值:gzip_types text/html;

指定除text/html之外的,需要压缩的响应体的MIME类型。如指定值 * 则匹配任意MIME类型(0.8.29)。携带text/html的响应体类型总是被压缩。

参考连接:http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_types

语法:gzip_buffers number size;

默认值:gzip_buffers 32 4k|16 8k;

设置用于压缩响应体的缓冲区数量和大小。默认的,buffer大小等于一个内存页大小,4K、8K, 取决于操作系统。

到0.7.28为止,默认的使用4个4k、8K

参考连接:http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_buffers

更多参数研究,查看官方文档:http://nginx.org/en/docs/

Nginx 参数配置相关的更多相关文章

  1. Tomcat 参数配置相关

    Tomcat参数配置相关 by:授客 QQ:1033553122 目的: 对Tomcat配置的点滴学习总结,主要目的在于分析Tomcat与性能相关的一些参数设置,以便性能调优时选择最优配置   环境: ...

  2. Nginx编译安装相关参数

    Nginx编译安装相关参数 Nginx插件安装 ------------------pcre------------------ cd /usr/local/source wget http://ww ...

  3. nginx.conf配置及优化相关

    nginx.conf配置文件内容 user www www; worker_processes ; worker_rlimit_nofile ; error_log /data/nginx/logs/ ...

  4. nginx响应高并发参数配置

    一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...

  5. Nginx 核心配置-可优化配置参数

    Nginx 核心配置-可优化配置参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.nginx的官网查看指令帮助信息方法 1>.打开nginx的官网(https://ng ...

  6. Nginx.conf参数配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数 ...

  7. Nginx的配置参数中文说明

    Nginx的配置参数中文说明   前言 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力强 ...

  8. Nginx搭建与相关配置

    目录 一.Nginx简介 1.1 概述 1.2 Nginx与Apache的差异 二.编译安装Nginx服务 2.1 将nginx软件包传到主机/opt目录下 2.2.安装依赖包 2.3.添加模块编译安 ...

  9. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

随机推荐

  1. 卷积神经网络CNN的原理(二)---公式推导

    卷积神经网络与普通神经网络的区别在于,卷积神经网络包含多个由卷积层和池化层构成的特征抽取器.在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接.在CNN的一个卷积层中,通常包含若干个特征平面( ...

  2. Linux 下 pushd,popd,cd- 用法

    一,为何要使用这几个命令? 可能大家会有疑问,为何要使用这几个命令,   难道用cd不就可以切换目录了吗?   没错,使用cd就可以切换到需要访问的目录,   但是有时会是一个路径很长,层次很多的目录 ...

  3. Python - Fabric简介

    1 - Fabric Fabric是一个Python的库,提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化.流水化地执行Shell命令. 非常适合用来做应用的远程部署及系统维护.简单易 ...

  4. 数据库语句收藏(MySQL)

    概览 => MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. =>关键字不区分大小写 => S ...

  5. nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

    参考资料:https://blog.csdn.net/u010860832/article/details/86235993 这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正. ...

  6. HP C7000刀片服务器开关机过程

    HP C7000开关机过程   一.HP C7000关机过程 1.关闭台刀片服务器. 2.确认刀片已关机后,登录https://xxx.xxx.xxx.x/,Administrator/2PF2QT, ...

  7. leetcode — trapping-rain-water

    /** * Source : https://oj.leetcode.com/problems/trapping-rain-water/ * * Created by lverpeng on 2017 ...

  8. Python丢弃返回值

    函数多个返回值 python的函数支持返回多个值.返回多个值时,默认以tuple的方式返回. 例如,下面两个函数的定义是完全等价的. def f(): return 1,2 def f(): retu ...

  9. Hyperledger Fabric链码之三

    在<Hyperledger Fabric链码之一>和<Hyperledger Fabric链码之二>中我们介绍了链码的定义,并通过dev网络测试了测试了自己编写的链码程序. 本 ...

  10. yum一键安装企业级lamp服务环境-技术流ken

    1.简介 LAMP 是Linux Apache MySQL PHP的简写,其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行动态的脚本文件. 2.系统环境 cen ...