原理

Nginx 采用的是多进程(单线程) & 多路IO复用模型。使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器。

  1. Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。
  2. 接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接。
  3. master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。
Worker的工作方式(争抢)
一个master和多个worker的工作方式的好处
  1. 可以使用 nginx -s reload 热部署,利用nginx进行热部署的操作
  2. 每个worker是独立的进程,其中有一个worker出现问题,其他的worker都能正常运行,继续进行争抢的过程,完成服务器的响应,不会造成服务的中断.
设置多少个worker合适?

注意 worker 进程数,一般会设置成机器 cpu 核数。因为更多的worker 数,只会导致进程相互竞争 cpu,从而带来不必要的上下文切换。
使用多进程模式,不仅能提高并发率,而且进程之间相互独立,一个 worker 进程挂了不会影响到其他 worker 进程。

work_connection(worker的连接数)

问题:当发送一个请求的时候,占用worker的多少个连接数?

答案:2个(访问静态资源,一来一回)或者4个(访问动态资源,一来一回+和tomcat的一来一回)

最大并发量

问题:nginx有一个master,有四个worker,每个worker的最大连接数为1024,那么nginx支持的最大并发为多少?

访问静态资源: work_connections * worker_processes /2

访问动态资源: work_connections * worker_processes /4

最后修改日期:2020-07-13

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。