nginx配置--event模块
在nginx的配置中,event模块可以进行以下配置:
- 设置网络连接的序列化。 在Nginx服务器的多进程下,有可能出现惊群(Thundering herd problem)问题,指的是当某一个时刻只有一个网络连接到来时,多个睡眠进程会被同时唤醒,但只有一个进程可以获得连接。如果每次唤醒的进程数目太多,会影响一部分系统性能(系统对用户进程/线程频繁的做无效的调度、上下文切换,系统系能大打折扣)。为了解决这样的问题,Nginx配置中包含这样一条指令accept_mutex,当其设置为开启时,将会对多个Nginx进程接受连接进行序列化,阻止多个进程对连接的争抢。其语法结构为 accept_mutex on|off. 此指令默认为开启状态。关于nginx解决惊群的方法可以参见http://blog.csdn.net/russell_tao/article/details/7204260
- 设置是否同时接受多个网络连接。每个Nginx服务器的worker process都有能力同时接收多个新到达的网络连接(nginx在实现时,是通过一个连接池来管理的,每个worker process都有一个独立的连接池,连接池的大小是worker_connections。这里的连接池里面保存的其实不是真实的连接,它只是一个worker_connections大小的一个ngx_connection_t结构的数组。并 且,nginx会通过一个链表free_connections来保存所有的空闲ngx_connection_t,每次获取一个连接时,就从空闲连接链表中获取一个,用完后,再放回空闲连接链表里面。 )但是这需要在配置文件中进行配置,其指令为multi_accept,语法结构为:multi_accept on|off; 此指令默认为关闭状态,即每个worker process一次只能处理一个新到达的网络连接。
- 事件驱动模型的选择。 Nginx服务器提供了多种事件驱动模型来处理网络消息,配置文件中为我们提供了相关的指令来强制Nginx服务器选择哪种事件驱动模型进行消息处理,指令为use,语法结构为: use method; method可选择的内容为select,poll,kqueue,epoll,rtsig,/dev/poll以及eventport。
- 配置最大连接数。 指令worker_connecetions主要用来设置允许每一个worker process同时开启的连接数。其语法结构为worker_connections number;此指令的默认设置为512. 注意:number的值不能大于操作系统支持打开的最大文件句柄数量。