26 Nginx的events块指令讲解

26 Nginx的events块指令讲解

events 块设置nginx服务器与用户的网络连接

26.1 accept_mutex

accept_mutex:设置Nginx网络连接序列化

语法 accept_mutex on|off;
默认值 accept_mutex on;
位置 events

 

 

 

 

主要解决常说的“惊群”问题,当某一时刻,客户端发来一个请求连接,Nginx后台是以多进程的模式工作,多个worker进程会被同时唤醒,但最终只会有一个worker进程可以获取到连接,其他worker进程继续进入休眠状态,如果每次唤醒的进程数目太多,就会影响Nginx的整体性能。若将上述值设置为on(开启状态),将会对多个Nginx进程接收连接进行序列化,一个个唤醒接收,有效防止多个进程对连接的争抢

1581566971955

1.丢一根骨头,三只小狗同时被唤醒,过来争抢这根骨头——惊群

2.直接按照a 、b、c的顺序,将骨头挨个直接分配给对应小狗

注意:效率不是绝对的,假设当有三个骨头时,再按照顺序挨个分配给三只小狗,没有三只小狗同时过来竞争有效率,需结合实际生产环境

26.2 multi_accept

multi_accept:设置是否允许worker进程同时接收多个网络连接

语法 multi_accept on|off;
默认值 multi_accept off;
位置 events

 

 

 

 

若 multi_accept 被关闭,nginx 一个工作进程只能同时接受一个新的连接,否则,一个工作进程可以同时接受所有的新连接

注意:实际生产环境,建议开启此功能

26.3 worker_connections number

worker_connections:设置配置单个worker进程最大连接数

语法 worker_connections number;
默认值 worker_connections 512;
位置 events

 

 

 

 

连接数不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数,另外,number 值不能大于操作系统支持打开的最大文件句柄数量(与操作系统有关)

26.4 use

use:设置nginx服务器选择哪种事件模型驱动来处理网络消息

语法 use method;
默认值 根据操作系统定
位置 events

 

 

 

 

注意:此处所选择的事件处理模型是nginx优化部分的重要内容(本质优化I/O多路复用),method 可选 select/poll/epoll/kqueue 等(多路复用的不同实现方式),之前准备 centos环境强调使用 linux内核 2.6以上,就是为了能使用epoll函数来优化nginx

可以通过 ./configure 编译进行使用:设置是否需要将对应事件驱动模块编译到nginx内核

--with-select_module、--without-select_module

--with-poll_module、--without-poll_module

注意:./configure 与 nginx.conf 同时指定,最终以 nginx.conf 配置为准

———————————————————————————————————————————————————————————————————————————

                                                                                                                         无敌小马爱学习

posted on 2026-04-14 22:16  马俊南  阅读(5)  评论(0)    收藏  举报