Nginx处理Web请求机制分析

Nginx是一个高性能的服务器,处理的并发数可以达到几百万,为什么会这样呢?

1. Worker抢占机制

  • 服务器有一个master主进程,监听80端口,默认的worker进程只有一个,我们可以配置多个;
  • 当客户端有请求进入到Nginx中,假设有三个worker抢这个请求,worker通过争抢accept_mutex这个互斥锁来获得这个请求,假设worker1抢到了,那么客户端就和worker1建立的连接关系,worker1就可以读取、解析、响应这个请求;

2. Nginx事件处理

  • 服务器有一个master主进程,监听80端口,默认的worker进程只有一个;

  • 假设此时client1正在与worker1连接并且阻塞了,这时又有client2、client3等多个客户端发来请求;

  • 但是由于Nginx是异步的,采用了epoll模型,当client1阻塞的时候去处理client2,以此类推;

  • 如果master又fork个worker2、worker3等进程,依然可以去处理多个请求,因此,Nginx只需要几个worker就可以处理数十万个请求;

  • Nginx给每个worker默认的允许连接的最大连接数是1024,我们可以自定义连接数,在nginx.conf文件中:

    events {
        worker_connections  1024;
    }
    

你可能感兴趣的:(Nginx,nginx)