04 2018 档案

摘要:1. 点播的配置 假设配置文件 nginx.conf 中对 rtmp 配置如下: 2. handshake 过程 2.1 ngx_rtmp_init_connection 2.2 ngx_rtmp_init_session 2.2.1 ngx_rtmp_set_chunk_size 该函数主要是设置 阅读全文
posted @ 2018-04-30 15:31 季末的天堂 阅读(926) 评论(0) 推荐(0)
摘要:1. 函数调用分析 在开启 master 的情况下,多进程模型的下的入口函数为 ngx_master_process_cycle,如下: Nginx 核心进程模型框图 1.1 ngx_master_process_cycle: 1.2 ngx_start_worker_processes 1.4 n 阅读全文
posted @ 2018-04-29 16:44 季末的天堂 阅读(827) 评论(0) 推荐(0)
摘要:1. 概述 监听端口属于 server 虚拟主机,它是由 server{} 块下的 listen 配置项决定的。 每监听一个 TCP 端口,都将使用一个独立的 ngx_rtmp_conf_port_t 结构体来表示: 一个端口,可能对应着多个地址(当主机上有多个 IP 地址时),该地址用 ngx_r 阅读全文
posted @ 2018-04-29 16:41 季末的天堂 阅读(1251) 评论(0) 推荐(0)
摘要:1. 概述 Nginx rtmp 对 rtmp{...} 内的配置项划分了几个级别: 直接隶属于 rtmp{} 块内的配置项称为 main 配置项。 直接隶属于 server{} 块内的配置项称为 srv 配置项。 直接隶属于 application{} 块内的配置项称为 app 配置项。 直接隶属 阅读全文
posted @ 2018-04-28 22:28 季末的天堂 阅读(1086) 评论(0) 推荐(0)
摘要:1. 概述 事件处理要解决的两个问题: 1. "惊群" 问题,即多个 worker 子进程监听相同端口时,在 accept 建立新连接时会有争抢,引发不必要的上下文切换, 增加系统开销。 2. 负载均衡问题。 这两个问题的解决需要依靠 Nginx 的 post 事件处理机制。Nginx 设计了两个 阅读全文
posted @ 2018-04-27 15:50 季末的天堂 阅读(1282) 评论(0) 推荐(0)
摘要:1. 缓存时间 1.1 管理 Nginx 中的每个进程都会单独地管理当前时间。ngx_time_t 结构体是缓存时间变量的类型: Nginx 定义了以下全局变量用于缓存时间: 对于 worker 进程而言,除了 Nginx 启动时更新一次时间外,任何更新时间的操作都只能由 ngx_epoll_pro 阅读全文
posted @ 2018-04-27 15:05 季末的天堂 阅读(1556) 评论(1) 推荐(0)
摘要:1. 什么是红黑树? 1.1 概述 红黑树实际上是一种自平衡二叉查找树。 二叉树是什么?二叉树是每个节点最多有两个子树的树结构,每个节点都可以用于存储数据,可以由任 1 个节点访问它的左右 子树或父节点。 二叉查找树是什么?二叉查找树或者是一棵空树,是具有下列性质的二叉树。 每个节点都有一个作为查找 阅读全文
posted @ 2018-04-27 09:37 季末的天堂 阅读(1369) 评论(0) 推荐(0)
摘要:1. epoll 原理 假设有 100 万用户同时与一个进程保持着 TCP 连接,而每一时刻只有几十个或几百个 TCP 连接时活跃的(接收到 TCP 包),也就是说,在每一时刻,进程只需要处理这 100 万连接中的一小部分连接。 select 和 poll 的做法是:进程每次收集事件的连接(其实这 阅读全文
posted @ 2018-04-26 21:14 季末的天堂 阅读(10805) 评论(0) 推荐(1)
摘要:1. 概述 ngx_event_core_module 模块是一个事件类型的模块,它在所有事件模块中的顺序是第一位。它主要完成以下两点任务: 创建连接池(包括读/写事件); 决定究竟使用哪些事件驱动机制,并初始化将要使用的事件模块 2. 配置项 2.1 ngx_event_conf_t 结构体 3. 阅读全文
posted @ 2018-04-25 23:11 季末的天堂 阅读(1066) 评论(0) 推荐(0)
摘要:1. ngx_events_module核心模块的功能介绍 ngx_events_module 模式是一个核心模块,它的功能如下: 定义新的事件类型 定义每个事件模块都需要实现的ngx_event_module_t接口 管理这些事件模块生成的配置项结构体,并解析事件类配置项,同时,在解析配置项时会调 阅读全文
posted @ 2018-04-25 21:24 季末的天堂 阅读(604) 评论(0) 推荐(0)
摘要:1. Nginx事件管理概述 首先,Nginx定义了一个核心模块ngx_events_module,这样在Nginx启动时会调用ngx_init_cycle方法解析配置项,一旦在 nginx.conf配置文件中找到ngx_events_module感兴趣的配置项“events{}”,ngx_even 阅读全文
posted @ 2018-04-25 17:34 季末的天堂 阅读(3876) 评论(0) 推荐(0)
摘要:1. 散列表(即哈希表概念) 散列表是根据元素的关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录, 以加快查找速度。这个映射函数 f 叫做散列方法,存放记录的数组叫做散列表。 若结构中存在关键字和 K 相等的记录,则必定在 f(K) 的存储位置上。由此,不需要 阅读全文
posted @ 2018-04-25 09:37 季末的天堂 阅读(691) 评论(0) 推荐(0)
摘要:基本结构 1. ngx_pool_t 提供的函数 1. ngx_create_pool(): 分配并初始化一块 size 大小的内存池 初始分配的内存池结构如下图 创建的内存池被结构体 ngx_pool_t 占去开头一部分(即额外的开销 overhead),Nginx实际是从该内存池里 p d.la 阅读全文
posted @ 2018-04-23 17:27 季末的天堂 阅读(744) 评论(1) 推荐(1)