描述nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项的含义

描述nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项的含义

nginx 配置文件格式说明

  • 配置文件由指令与指令块构成
  • 每条指令以;分号结尾,指令与值之间以空格符号分隔
  • 可以将多条指令放在同一行,用分号分隔即可,但可读性差,不推荐
  • 指令块以{ }大括号将多条指令组织在一起,且可以嵌套指令块
  • include语句允许组合多个配置文件以提升可维护性
  • 使用#符号添加注释,提高可读性
  • 使用$符号使用变量
  • 部分指令的参数支持正则表达式

1.worker_processes

启动Nginx工作进程的数量,一般设为和CPU核心数相同,auto:自动检测,设置为当前主机cpu的核心数

worker_processes [number | auto];  

[root@centos7 ~]#ps aux|grep nginx
root       1301  0.0  0.0  46344  2020 ?        Ss   18:52   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      2011  0.0  0.1  46772  2276 ?        S    21:21   0:00 nginx: worker process
root       2211  0.0  0.0 112808   968 pts/1    S+   22:54   0:00 grep --color=auto nginx

#将工作进程的数量设置为2个
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
worker_processes  2;
[root@centos7 ~]#nginx -s reload
[root@centos7 ~]#ps aux|grep nginx
root       1301  0.0  0.1  46232  2060 ?        Ss   18:52   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      2241  0.0  0.0  46652  1932 ?        S    23:02   0:00 nginx: worker process
nginx      2242  0.0  0.0  46652  1932 ?        S    23:02   0:00 nginx: worker process
root       2244  0.0  0.0 112808   968 pts/1    S+   23:02   0:00 grep --color=auto nginx

2.worker_cpu_affinity

将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。

worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto;

CPU MASK: 00000001:0号CPU
          00000010:1号CPU
          10000000:7号CPU

[root@centos7 ~]#ps axo pid,cmd,psr |grep nginx
  1301 nginx: master process /apps   1
  2241 nginx: worker process         0
  2242 nginx: worker process         0
  2340 grep --color=auto nginx       1

#将第一个工作进程绑定到 CPU0,将第二个工作进程绑定到 CPU1
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
worker_processes  2;
worker_cpu_affinity 01 10;
[root@centos7 ~]#nginx -s reload
[root@centos7 ~]#ps axo pid,cmd,psr |grep nginx
  1274 nginx: master process /apps   0
  2029 nginx: worker process         0
  2030 nginx: worker process         1
  2036 grep --color=auto nginx       1

3.worker_rlimit_nofile

所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制。最好与ulimit -n 或者limits.conf的值保持一致。用于在不重新启动主进程的情况下增加限制。

#设置工作进程的最大打开文件数为65536
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
worker_rlimit_nofile 65536;

[root@centos7 ~]#ulimit -n 100000
[root@centos7 ~]#ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7835
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 100000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7835
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

#修改PAM资源限制
[root@centos7 ~]#vim /etc/security/limits.conf
*                soft    core            unlimited
*                hard    core            unlimited
*                soft    nproc           1000000
*                hard    nproc           1000000
*                soft    nofile          1000000
*                hard    nofile          1000000
*                soft    memlock         32000
*                hard    memlock         32000
*                soft    msgqueue        8192000
*                hard    msgqueue        8192000

#重启生效
[root@centos7 ~]#reboot
[root@centos7 ~]#ulimit -n
1000000
[root@centos7 ~]#ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7835
max locked memory       (kbytes, -l) 32000
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1000000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 8192000
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1000000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

4.worker_connections

设置单个工作进程可以同时打开的最大连接数。这个数字包括所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接。另一个考虑是实际同时连接数不能超过当前最大打开文件数限制,可以通过 worker_rlimit_nofile更改。

  • 作为web服务器的时候最大并发数为:worker_connections * worker_processes
  • 作为反向代理的时候为:(worker_connections * worker_processes)/2
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
events {
    worker_connections  10240;
    accept_mutex on;
    multi_accept on;
}

[root@centos7 ~]#nginx -s reload

5、Nginx性能优化建议

Syntax:accept_mutex on | off;
Default:accept_mutex off;
Context:events
#建议设置为accept_mutex on; 

如果accept_mutex启用,工作进程将依次接受新连接,默认为off。否则,将通知所有工作进程有关新连接的信息,如果新连接量较低,则某些工作进程可能只是浪费系统资源,在高并发场景下,建议设置为on。

Syntax:multi_accept on | off;
Default:multi_accept off;
Context:events
#建议设置为multi_accept on; 

如果multi_accept禁用,工作进程将一次接受一个新连接,默认为off。开启后,工作进程将一次接受所有新连接。建议设置为on

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值