Nginx服务架构初探(一)

事件了解一下 基本事件驱动如下

7.事件驱动模型
        1>select库 先创建三个关注事件描述符(读/写/异常) 然后调用低层select()函数  等待事件发生
        2>poll库 同select库机制一样  但不同的是只创建一个关注事件描述符 在结构上设置(读/写/异常)
        3>epoll库 通知内核创建N个描述符列表 然后epoll库会等待内核通知事件发生 是高性能事件驱动之一
        4>rtsig模型 实时信号 使用rtsig时 通过系统内核建立一个rtsig队列用于存放标记事件 等待工作进程处理 当队列信号溢出时(默认1024 可修改) nginx将停止使用rtsig 而是使用poll库处理未处理的事件 直到rtsig 队列全部清空 然后再次启动rtsig模型,以防止新的溢出发生
        5>kqueue模型 与epoll没有本质区别 同时支持条件触发(满足条件)和边缘触发(状态变化)
        6>/dev/poll模型 unix平台使用了虚拟/dev/poll设备 将要监视的文件描述符加入这个设备 然后通过ioctl()调用来获取事件通知 在solaris ph/ux IRIX Tru unix中建议使用此方式
        7>eventport模型  用于支持solaris10 可以有效的防止内核崩溃等情况的发生

猜你喜欢

转载自my.oschina.net/ives/blog/1814517