1、master与worker
一个master(老板)多个worker(工人),worker做事。
2、worker工作模式
3、一个 master 和多个 woker 有好处
可以使用 nginx --s reload 热部署,利用 nginx 进行热部署操作
每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 是独立的,继续进行争抢,实现请求过程,不会造成服务中断。
4、设置多少个 woker 合适
worker 数和服务器的 cpu 数相等是最为适宜的
Nginx 同 redis 类似都采用了 IO多路复用机制,每个 worker 都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是千上万个请求也不在话
下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu 数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。
5、连接数 worker_connection
这个值是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接数,应该是 worker_connections * worker_processes。当然,这里说的是最大连接数,对于 HTTP 请求本地资源来说,能够支持的最大并发数量是
worker_connections *worker_processes,如果是支持 http1.1 的浏览器每次访问要占两个连接
所以普通的静态访问最大并发数是:
worker_connections * worker_processes /2
,而如果是 HTTP 作为反向代理来说,最大并发数量应该是
worker_connections *worker_processes/4
。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。
注:worker_connections表示每个worker最大连接数
worker_processes 表示 worker数量
每个worker占用2个或4个连接数:静态2个,动态4个。
静态:(worker直接返回静态资源)
动态:(worker需要请求tomcat服务器)
感兴趣的话点点关注,我们一起成长进步。