码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx学习学习总结(一)---nginx事件处理模型

时间:2016-05-11 21:35:34      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

学习基于:http://tengine.taobao.org/book/chapter_02.html

 

  •   nginx是基于master和worker的多进程web服务器
  •   对于web服务器,事件通常有三种类型:网络事件(用异步非阻塞解决),信号,定时器。
  1. 采用异步非阻塞方式处理多个并发请求(网络事件)。并且避免我不必要的的上下文切换。
  2. 对于信号的处理,nginx包含以下特定的信号,代表特定的意义(中断当前进程,改变运行状态了,继续执行)例如:nginx正在等待事件(epoll_wait)时,如果收到信号,在信号处理完函数后,epoll_wait返回作物,然后程序可以再次胶乳epoll_wait调用。
  3. 由于epoll_wait等函数在调用的时候是可以设置一个超时时间的,所以nginx借助这个超时时间来实现定时器。nginx里面的定时器事件是放在一颗维护定时器的红黑树里面,每次在进入epoll_wait前,先从该红黑树里面拿到所有定时器事件的最小时间,在计算出epoll_wait的超时时间后进入epoll_wait。所以,当没有事件产生,也没有中断信号时,epoll_wait会超时,也就是说,定时器事件到了。这时,nginx会检查所有的超时事件,将他们的状态设置为超时,然后再去处理网络事件。由此可以看出,当我们写nginx代码时,在处理网络事件的回调函数时,通常做的第一个事情就是判断超时,然后再去处理网络事件。

 

Nginx学习学习总结(一)---nginx事件处理模型

标签:

原文地址:http://www.cnblogs.com/zoudaiyu/p/5483290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!