【Nginx那些事】系列
【Nginx那些事情】Nginx的安装和一般命令
【Nginx那些事情】Nginx配置文件的说明
【Nginx那些事】Nginx的原理分析
【Nginx那些事情】Nginx配置示例(一)反向代理
【Nginx那些事情】Nginx配置示例(2)负载平衡
【Nginx那些事】Nginx配置实例(三)动静分离
【Nginx那些事情】Nginx配置示例(四)构建高可用性集群
【Nginx那些事】Nginx的原理分析思考Nginx的大师和沃克的关系
nginx大师与沃克的关系
大师只有一个人,是领队,负责管理、监视。 工作器有很多。 兼职,处理领导分发的任务。
但是,master会通知工作人员一声,而不是分配任务。 worker会争夺资源(客户端),而已经夺走的不会争夺以下资源: 争用后,工作器开始读取请求-分析请求-处理请求,在数据完全返回客户端后,即使此工作器争用事件结束,也可以争夺以下资源:
1、考虑一个大师和多个woker的好处
对于每个工作器进程来说,独立的进程不需要进行锁定,从而减少了锁定的开销,并且在编程和问题检索时也很有用。 其次,采用独立的流程可以避免相互影响。 一个进程结束后,其他进程仍在运行,服务不会中断。 主进程将立即开始新的工作器进程。 当然,工作器进程的异常终止一定是程序中有错误。 异常终止会导致当前工作器上的所有请求失败,但不会影响所有请求,从而降低了风险。
2、设置多少个工作器比较合适
Nginx与redis一样采用io复用机制,每个工作器都是独立的进程,但每个进程只有一个主线程,以异步无阻塞方式处理请求,即使是成千上万个请求也不在话下。 每个工作器线程都可以最大限度地提高单个cpu的性能。 因此,工作器数和服务器的cpu数相等是最佳的(一般设定为工作器数和cpu数一致)。 设置得少会浪费cpu,设置得多会因cpu频繁切换上下文而造成损失。
3、连接数worker_ connection计算
此值表示每个工作器进程可以建立的最大连接数。 因此,nginx可以建立的最大连接数必须为worker _ connections * worker _ processes。 当然,这里将介绍最大连接数。 如果HTTP请求本地资源,则worker _ connections * worker _ processes可以支持的最大并发连接数为两个连接(如果是支持http1.1的浏览器)。 因此,正常静态访问的最大并发行数为: worker _ connections * worker _ processes/2,如果将HTTP用作反向代理,则最大并发行数为worker _ connections
worker_connections :连接数
工作器_ processes :工作器数量