Nginx服务器的Web请求处理机制

2019-06-16  本文已影响0人  鸿雁长飞光不度

Web服务器和客户端是一对多关系,一个服务器必须能够同时处理来自多个客户端的请求。主要有一下三种方式

1. web服务器处理网络请求的机制

1.多进程方式
服务器每当接收到一个客户端的请求连接,就由服务器的主进程生成一个子进程和该客户端建立的连接进行交互,直到连接结束。Apache采用的是这种模式,后来改进提前生生成进程,但是本质没有变化。

  1. 多线程方式

服务器收到客户单的请求时,由主进程创建一个线程来处理请求。

3.异步方式

2.nginx 对网络请求的机制

nginx采用多进程机制+异步非阻塞模式处理网络请求

nginx 由一个主进程和多个work进程完成请求处理。主进程负责调度,work进程负责处理客户端的请求。多个work进程类似于apache服务器的处理方式,在每个work进程内部,采用异步非阻塞模式处理请求。 多进程机制保障在访问量增加的时候不增长对系统资源的压力,异步非阻塞模式减少工作进程在IO调用的延迟,保证了处理能力

异步非阻塞模式是如何实现的:IO调用是如何把自己的状态通知给工作进程的?

可以让工作进程隔一段时间取轮询查询,如果IO完成操作就通知客户端,如果没有完成就继续当前工作。这种方式会造成额外的开销,最好的方式是让IO在调用完成后主动通知工作进程,工作进程收到通知后,返回结果给客户端。select/poll/epoll/kqueue这些事件驱动模型,就提供了一种通知机制,让一个进程可以并发处理多个请求,IO的状态完全驱动模型来管理,通知也有驱动模型来完成,事件驱动模型是linux操作系统自身支持的机制。异步非阻塞模式以后将会单独学习,通过代码实验的方式去测试实现效果。

上一篇 下一篇

猜你喜欢

热点阅读