Nginx 原理解析
文章已同步至 GitHub 开源项目: Java超神之路
master 和 worker
当 linux 启动的时候,会有两个和 nginx 相关的进程,一个是
master
,一个是worker
。
master 如何工作
当客户端发送请求到
nginx
之后,master
会接收到这个请求,然后通知所有的worker
进程,此时,worker
会对这个请求进行争抢。某个worker
抢到请求之后,就会根据设置好的步骤进行请求转发。一个
master
和多个worker
的好处可以使用
nginx -s reload
热部署。 当进行热部署的时候,正常的worker
会重启,但是正在处理请求的worker
不会,等请求处理完毕之后,才会进行重启。对于每一个独立的
worker
,在进行并发的时候,不需要考虑加锁的问题。而且各个worker
之间不会互相影响。降低了业务瞬间失效的可能。
worker 的设置
worker 的数量
nginx 和 redis 一样采用了 io 多路复用机制,每个 worker 都是一个独立的进程。每个
worker
的进程都会将 cpu 的性能发挥到极致。所以 worker 的数量和服务器的 cpu 数量相等是最合适的。(几核就设置几个 worker)
设置少了会浪费 cpu 性能,导致处理业务请求的速度变低。
设置多了会造成 cpu 频繁切换上下文带来的损耗。
文章已同步至 GitHub 开源项目: Java超神之路 更多 Java 相关知识,欢迎访问!
版权声明: 本文为 InfoQ 作者【GitHub推荐】的原创文章。
原文链接:【http://xie.infoq.cn/article/c1c556e0499c67358e826028f】。文章转载请联系作者。
评论