【Nginx】Nginx事件模块

一、事件处理框架概述

事件处理框架所要解决的问题是如何收集、管理、分发事件。事件处理框架需要在不同的操作系统内核中选择一种事件驱动机制支持网络事件的处理。

步骤:

1.Nginx定义了一个核心模块ngx_events_module,该模块定义了事件类型的模块,为所有的事件模块解析events{}中的配置项,同时管理这些事件模块存储配置项的结构体

2.Nginx定义了一个非常重要的事件模块ngx_event_core_module,这个模块会决定使用哪种事件驱动机制,以及如何管理事件

3.Nginx定义了一系列(目前为9个)运行在不同操作系统、不同内核版本上的事件驱动模块

事件驱动模块接口:ngx_module_t表示Nginx模块的基本接口,而针对于每一种不同类型的模块,都有一个结构体来描述这一类模块的通用接口,这个接口保存在ngx_module_t结构体的ctx成员中。比如:事件模块的通用接口是ngx_event_module_t结构体。

typedef struct {

  ngx_str_t *name;//事件模块的名称

  void *(*create_conf)(ngx_cycle_t *cycle);//创建存储配置项参数的结构体

  char *(*init_conf)(ngx_cycle_t *cycle,void *conf);//综合处理当前事件模块感兴趣的全部配置项

  ngx_event_actions_t action;//每个事件模块需要实现的十个抽象方法

}ngx_event_module_t;

【Nginx】Nginx事件模块

时间: 2024-12-30 09:04:43

【Nginx】Nginx事件模块的相关文章

nginx学习笔记五(nginx的事件模块定义)

在linux后台服务器开发领域里面,epoll的大名是早有所闻.<深入理解nginx>一书在第9章-事件模块中就详细说明了epoll相关的系统调用是怎么嵌入到nginx的框架中. 下面说明nginx框架下与事件处理相关的一些模块. 一.ngx_events_module ngx_events_module是核心模块中的一种.之前一直不是很明白核心模块的意思,现在想来,事件模块的核心模块应该是第一个启动的与事件相关的模块.这个模块并不会去处理实际的事件业务,而是会去做一些基本的初始化操作.ngx

Nginx 事件模块

概述 Nginx 是以事件的触发来驱动的,事件驱动模型主要包括事件收集.事件发送.事件处理(即事件管理)三部分.在Nginx 的工作进程中主要关注的事件是 IO 网络事件 和 定时器事件.在生成的 objs 目录文件中,其中ngx_modules.c 文件的内容是 Nginx 各种模块的执行顺序,我们可以从该文件的内容中看到事件模块的执行顺序为以下所示:注意:由于是在 Linux 系统下,所以支持具体的 epoll 事件模块,接下来的文章结构按照以下顺序来写. extern ngx_module

nginx事件模块指令

accept_mutex Syntax: accept_mutex [ on | off ] Default: on nginx 使用连接互斥锁进行顺序的accept()系统调用. accept_mutex_delay Syntax: accept_mutex_delay Nms; Default: 500ms 如果一个进程没有互斥锁,它将延迟至少多长时间.默认情况下,延迟是500ms . debug_connection Syntax: debug_connection [ip | CIDR]

nginx源码分析--事件模块 &amp; 琐碎

通过HUP信息使得NGINX实现重新读取配置文件,使用USR2信号使得NGINX实现平滑升级. 在nginx中有模块这么一说,对外所有的模块都是ngx_module_t类型,这个结构体作为所有模块的通用接口,它只定义了init_master.init_module.init_process.init_thread.exit_thread.exit_process.exit_master这7个回调方法,(其实init_master.init_thread.exit_thread这3个方法目前都没有

【Nginx】ngx_event_core_module事件模块

功能:创建连接池,决定使用哪些事件驱动机制,以及初始化将要使用的事件模块 该模块定义了ngx_event_core_commands数组处理其感兴趣的7个配置项 ngx_event_conf_t为该模块定义的用于存储配置项参数的结构体 在Nginx启动过程中还没有fork出worker子进程时,会首先调用ngx_event_core_module模块的ngx_event_module_init方法,而在fork出worker子进程后,每一个worker进程会在调用ngx_event_core_m

nginx事件模块 -- 第一篇

微信公众号:郑尔多斯关注可了解更多的Nginx知识.任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达! 事件机制 下面是我们对nginx事件相关的配置,如下: 1events {2    worker_connections  1024;3    use epoll;4} 我们明确的使用了epoll机制,在nginx中,和事件相关的模块一共有三个,分别为ngx_events_module,ngx_event_core_module,ngx_epoll_module.本篇文章

nginx事件模块 -- 第二篇

微信公众号:郑尔多斯关注可了解更多的Nginx知识.任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达! 事件机制 上一篇文件我们简单的介绍了ngx_event_block()函数的功能,这个函数用于解析events指令,引入事件机制.其实真正的工作是在ngx_event_core_module中完成的,这个模块可以解析use,work_connections等指令,这些指令用于控制nginx事件机制的一些参数.上一篇文章中我们也提到过执行ngx_event_block()函

Nginx 定时器事件

概述 在 Nginx 中定时器事件的实现与内核无关.在事件模块中,当等待的事件不能在指定的时间内到达,则会触发 Nginx 的超时机制,超时机制会对发生超时的事件进行管理,并对这些超时事件作出处理.对于定时事件的管理包括两方面:定时事件对象的组织形式 和 定时事件对象的超时检测. 定时事件的组织 Nginx 的定时器由红黑树实现的.在保存事件的结构体 ngx_event_t 中有三个关于时间管理的成员,如下所示: struct ngx_event_s{ ... /* 标志位,为1表示当前事件已超

【Nginx】核心模块ngx_events_module

核心模块ngx_events_module是一个专门用于管理事件模块的模块.它的实现很简单,下面是该模块的定义: ngx_module_t ngx_events_module = { NGX_MODULE_V1, &ngx_events_module_ctx, /* module context */ ngx_events_commands, /* module directives */ NGX_CORE_MODULE, /* module type */ NULL, /* init mast