Nginx的实现原理
1、启动 Nginx 会有 master 进程和 worker 进程
2、worker进程的工作原理
3、一个Master,多个Worker的好处
3.1、有利于Nginx进行热部署,nginx -s reload 热部署(热部署命令执行后,让空闲的worker重新加载,正在执行任务的worker在执行完任务后再重新加载)
3.2、每个worker是独立的进程,不需要加锁,因此省掉了锁带来的开销;如果其中一个worker出现问题,其他worker独立的,继续进行争抢,实现请求过程,不会造成服务中断。
4、设置多少个Worker才合适?
Nginx同Redis类似,都是采用io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是成千上万个请求也不在话下,每个worker的线程可以把一个cpu的性能发挥到极致,所以worker数量和服务器的cpu数量相等最为适宜,设置少了会浪费CPU,设置多了会造成CPU频繁切换上下文带来的损耗。
5、连接数 worker_connection
5.1、发送请求占用worker几个连接数?
2个或者4个,如果是静态请求则是2个连接数,如果是动态请求,则是4个连接数。
静态请求,直接请求至worker即可,动态请求,要请求至worker,再请求至后端服务器。
5.2、nginx有1个master和4个worker,每个worker支持的最大连接数是1024,支持的最大并发数是多少?
普通的静态访问最大并发数是:worker_connection * worker_process/2
而如果是http作为反向代理来说,最大并发数是:worker_connection * worker_process/4