1、概述
nginx 能够支持 5W 并发连接,并且 cpu、内存 等资源消费非常低,运行非常稳定。
2、环境配置
1、安装 gcc 环境
2、安装第三方开发包 PCRE :解析 正则表达式
3、安装 zlib:提供压缩和解压,zlib用来对http包进行gzip
4、安装 OpenSSL:用来支持 https
3、安装nginx
启动nginx
1 | kill -9 master_pid |
只会杀死 master进程,woker 进程仍然在运行
1 | ./nginx -s reload |
如果 woker进程 他爹 不是主进程(woker进程id不连续), 要通过 reload 重启一下;
停止nginx
1 | ./nginx -g TERM|INT|QUIT |
4、conf 文件详解
https://blog.csdn.net/tjiyu/article/details/53027619
1 | user nginx; # 配置用户、工作组 |
tcp_nopush
: 静群效应,默认开启
accept_mutex
:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是「惊群问题」。
nginx缺省激活了accept_mutex,是一种保守的选择。如果关闭了它,可能会引起一定程度的惊群问题,表现为上下文切换增多(sar -w)或者负载上升,但是如果你的网站访问量比较大,为了系统的吞吐量,我还是建议大家关闭它。
multi_accept
:告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数。
use epoll;
:nginx采用epoll事件模型,处理效率高
work_connections
: 单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections