Nginx的原理:
1.master:管理者,用来分配任务给worker
2.worker:工作者,用来执行任务,可以有多个worker
3.worker是如何工作的?
客户端client发送一个请求,请求会先到nginx的master中,master得到请求后,将得到请求的消息通知给worker,让worker们通过争抢得到,来做对应的工作,但是nginx不直接支持java,所以有些操作还要依赖于tomcat,利用tomcat来访问数据库等等,做一些事情。
4.一个master多个worker有什么好处?
①利于热部署,nginx -s --reload
②对于每个worker来说,其是独立的进程,不需要加锁,所以效率高,同时独立的进程,当一个挂掉后,不影响其他进程,工作正常进行。
5.设置多少个worker合适?
Nginx同Redis类似,都采用了io多路复用机制(Linux下,windows下不是),每个worker都是一个独立大的进程,每个进程中只有一个主线程,通过异步非阻塞的方式来处理请求,效率极高。
worker数和服务器的cpu数相等最好。4核就设置成4个等等。
6 连接数worker_connections?
第一个:发送请求,占用了worker的几个连接数?
答案:2个或4个
2个:worker和client一来一回
4个:worker和client一来一回,和tomcat一来一回
第二个:nginx有一个master,有四个worker,每个worker支持最大的连接数据1024,支持的最大并发数是多少?
普通的静态访问最大并发数是:worker_connectionsworker_processes/2
如果是HTTP作为反向代理来说,最大并发数量应该是worker_connectionsworker_processes/4