Appearance
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;
}可用模型
| 模型 | 系统 | 说明 |
|---|---|---|
| epoll | Linux | 推荐使用,性能最好 |
| kqueue | BSD/macOS | 推荐使用,性能最好 |
| /dev/poll | Solaris | 较老的方法 |
| select | 通用 | 性能较差,不推荐 |
| poll | 通用 | 性能较差,不推荐 |
| rtsig | Linux | 实时信号,不推荐 |
推荐配置
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 = 40962. 根据内存大小调整
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的并发处理能力。