Nginx是大型架构核心,下面我详解Nginx高并发调优实战@mikechen
worker_processes
控制Nginx启动多少个Worker进程。
配置:
worker_processes 4;
例如:
服务器:
CPU 4核
配置:
worker_processes 4;
启动:
Master
Worker1
Worker2
Worker3
Worker4
每个Worker绑定一个CPU核心。
推荐配置
生产环境通常设置:
worker_processes auto;
例如:
8核服务器:
worker_processes auto;
自动启动:
8个Worker
worker_connections
表示:
每个Worker最大处理连接数
配置:
events {
worker_connections 10240;
}
例如:
worker_processes = 8
worker_connections = 10240
理论最大连接:
8 × 10240 = 81920连接
Linux文件句柄优化
Nginx高并发必须突破Linux默认限制。
查看:
ulimit -n
默认:
1024
意味着:
一个进程最多打开:
1024个文件
高并发环境明显不足。
修改Linux限制
编辑:
vim /etc/security/limits.conf
增加:
* soft nofile 65535
* hard nofile 65535
sendfile
默认方式
普通文件发送:
磁盘
|
read()
|
用户空间
|
write()
|
内核空间
|
网卡
存在:
多次数据复制
开启sendfile:
sendfile on;
变成:
磁盘
|
内核空间
|
网卡
减少:
- CPU消耗
- 数据复制次数
特别适合:
- 图片
- 视频
- 静态文件