1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
events {
# 设置网络连接序列化,防止惊群现象发生,默认on
accept_mutex on;
# 设置一个进程是否同时接受多个网络连接,默认off
multi_accept on;
# 事件驱动模型
# use epoll;
# 允许的连接数
worker_connections 51200;

client_header_buffer_size 4k;
open_file_cache max=2000 inactive=60s;
open_file_cache_valid 60s;
open_file_cache_min_uses 1;
}
  • accept_mutex on
    • 惊群现象:一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能。设置网路连接序列化,防止惊群现象发生,默认为on
  • multi_accept on
    • 是否允许同时接受多个网络连接
    • 只能在events模块设置,Nginx服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个
  • use epoll
    • 使用epoll的I/O 模型(值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的)
    • 标准事件模型
      • Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
    • 高效事件模型
      • Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃
      • Epoll:使用于Linux内核2.6版本及以后的系统
      • /dev/poll:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+
      • Eventport:使用于Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装安全补丁
  • worker_connections
    • 工作进程的最大连接数量 理论上每台nginx服务器的最大连接数为worker_processes*worker_connections
  • keepalive_timeout
    • keepalive超时时间。 这里指的是http层面的keep-alive。
  • client_header_buffer_size
    • 客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k
    • 一般系统分页都要大于1k,所以这里设置为系统分页大小
    • 查看系统分页可以使用 getconf PAGESIZE命令
  • open_file_cache
    • 为打开文件指定缓存,默认是没有启用的
    • max指定缓存最大数量,建议和打开文件数一致
    • inactive是指经过多长时间文件没被请求后删除缓存
  • open_file_cache_valid
    • 多长时间检查一次缓存的有效信息,如果有一个文件在inactive时间内一次没被使用,它将被移除
  • open_file_cache_min_uses
    • open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果有一个文件在inactive时间内一次没被使用,它将被移除