努力奔跑只为追上那个被寄予厚望的自己。
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一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。