Nginx 配置学习

努力奔跑只为追上那个被寄予厚望的自己。

Nginx 整体配置

daemon off;
worker_processes 4;
pid  /var/run/nginx.pid;
worker_rlimit_nofile 65535;

Nginx events配置示例

events {
  use epoll;
  accept_mutex off;
  multi_accept off;
  worker_connections 65535;
}

daemon off

Docker 容器启动时,默认会把容器内部第一个进程,也就是pid=1的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出。nginx默认是以后台模式启动的,Docker未执行自定义的CMD之前,nginx的pid是1,执行到CMD之后,nginx就在后台运行,bash或sh脚本的pid变成了1。所以一旦执行完自定义CMD,nginx容器也就退出了。为了保持nginx的容器不退出,应该关闭nginx后台运行。

worker_connections

单个进程允许的客户端最大连接数
worker_connections 20480;

worker_rlimit_nofile

worker进程最大打开文件数worker_rlimit_nofile 65535;

accept_mutex

accept_mutex的意义:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是「惊群问题」。

multi_accept

如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。

上一篇:HTTP请求消息格式


下一篇:serversocket.accept用法