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进程接收连接进行序列化,一个个唤醒接收,有效防止多个进程对连接的争抢

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 配置为准
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号