Nginx服务器的事件处理机制

tech2023-09-30  100

Nginx服务器的工作进程调用IO后,就去进行其他工作了;

当IO调用返回后,会通知工作进程。这里有一个问题,IO调用是如何把自己的状态通知给工作进程的呢?一般解决这个问题的方案有两种。

一是,让工作进程在进行其他工作的过程中间隔一段时间就去检查一下IO的运行状态,如果完成,就去响应客户端,如果未完成,就继续正在进行的工作;

二是, IO调用在完成后能主动通知工作进程。对于前者,虽然工作进程在IO调用过程中没有等待,但不断的检查仍然在时间和资源上导致了不小的开销,最理想的解决方案是第二种。具体来说,select/poll/epoll/kqueue等这样的系统调用就是用来支持第二种解决方案的。这些系统调用,也常被称为事件驱动模型,它们提供了一种机制,让进程可以同时处理多个并发请求,不用关心IO调用的具体状态。IO调用完全由事件驱动模型来管理,事件准备好之后就通知工作进程事件已经就绪。

最新回复(0)