Skip to content

Events模块配置

Events模块配置影响Nginx处理连接的方式,是性能优化的关键部分。

Events模块位置

Events模块位于全局配置之后,HTTP模块之前:

nginx
events {
    worker_connections  1024;
    use epoll;
    multi_accept on;
}

worker_connections指令

设置每个Worker进程的最大连接数。

语法

nginx
worker_connections number;

示例

nginx
events {
    worker_connections 1024;
}

说明

  • 单个Worker进程的最大并发连接数
  • 总连接数 = worker_processes × worker_connections
  • 需要根据服务器性能调整

计算示例

nginx
# 4核CPU,每个Worker 1024连接
worker_processes 4;
worker_connections 1024;

# 总连接数 = 4 × 1024 = 4096

推荐配置

nginx
# 普通网站
worker_connections 1024;

# 高并发网站
worker_connections 2048;

# 低内存服务器
worker_connections 512;

use指令

指定事件处理模型。

语法

nginx
use method;

示例

nginx
events {
    use epoll;
}

可用模型

模型系统说明
epollLinux推荐使用,性能最好
kqueueBSD/macOS推荐使用,性能最好
/dev/pollSolaris较老的方法
select通用性能较差,不推荐
poll通用性能较差,不推荐
rtsigLinux实时信号,不推荐

推荐配置

nginx
# Linux系统
events {
    use epoll;
}

# BSD/macOS系统
events {
    use kqueue;
}

multi_accept指令

设置是否同时接受所有连接。

语法

nginx
multi_accept on | off;

示例

nginx
events {
    multi_accept on;
}

说明

  • on:尽可能多地接受连接
  • off:逐个接受连接(默认)
  • 高并发场景建议开启

推荐配置

nginx
# 高并发场景
events {
    multi_accept on;
}

# 普通场景
events {
    multi_accept off;
}

accept_mutex指令

设置连接互斥锁。

语法

nginx
accept_mutex on | off;

示例

nginx
events {
    accept_mutex off;
}

说明

  • on:Worker进程轮流接受连接(默认)
  • off:所有Worker进程同时接受连接
  • 高并发场景建议关闭

推荐配置

nginx
# 高并发场景
events {
    accept_mutex off;
}

# 普通场景
events {
    accept_mutex on;
}

accept_mutex_delay指令

设置互斥锁等待时间。

语法

nginx
accept_mutex_delay time;

示例

nginx
events {
    accept_mutex_delay 500ms;
}

说明

  • Worker进程等待获取互斥锁的时间
  • 默认值:500ms
  • 仅在accept_mutex on时有效

debug_connection指令

启用指定IP的调试日志。

语法

nginx
debug_connection address | CIDR | unix:;

示例

nginx
events {
    debug_connection 192.168.1.100;
    debug_connection 192.168.1.0/24;
}

说明

  • 仅记录指定IP的调试日志
  • 需要在全局配置中设置error_log为debug级别
  • 用于调试特定客户端的问题

完整配置示例

高并发配置

nginx
events {
    worker_connections  2048;
    use epoll;
    multi_accept on;
    accept_mutex off;
}

普通配置

nginx
events {
    worker_connections  1024;
    use epoll;
}

调试配置

nginx
events {
    worker_connections  512;
    use epoll;
    debug_connection 192.168.1.100;
}

性能优化建议

1. 根据CPU核心数调整

nginx
# 4核CPU
worker_processes 4;
worker_connections 1024;

# 总连接数 = 4 × 1024 = 4096

2. 根据内存大小调整

nginx
# 4GB内存
worker_connections 1024;

# 8GB内存
worker_connections 2048;

# 16GB内存
worker_connections 4096;

3. 高并发场景

nginx
events {
    worker_connections  2048;
    use epoll;
    multi_accept on;
    accept_mutex off;
}

4. 低内存场景

nginx
events {
    worker_connections  512;
    use epoll;
    multi_accept off;
}

监控连接数

查看当前连接数

bash
# 查看活动连接
netstat -an | grep :80 | grep ESTABLISHED | wc -l

# 或使用ss命令
ss -an | grep :80 | grep ESTABLISHED | wc -l

查看Nginx状态

启用stub_status模块:

nginx
server {
    listen 80;
    server_name localhost;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

访问 http://localhost/nginx_status 查看状态:

Active connections: 291
server accepts handled requests
 16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106

常见问题

连接数不足

现象:访问网站时出现连接被拒绝

解决:增加worker_connections

nginx
events {
    worker_connections 2048;
}

CPU使用率高

现象:CPU使用率持续较高

解决:调整worker_processes和worker_connections

nginx
worker_processes auto;
events {
    worker_connections 1024;
}

内存使用率高

现象:内存使用率持续较高

解决:减少worker_connections

nginx
events {
    worker_connections 512;
}

总结

Events模块配置的关键点:

  • worker_connections:设置每个Worker的最大连接数
  • use:选择合适的事件处理模型
  • multi_accept:高并发场景建议开启
  • accept_mutex:高并发场景建议关闭

合理配置Events模块,可以显著提升Nginx的并发处理能力。