
Nginx
永远的EMT
每天时刻保持超越自我的意识
展开
-
Nginx源码结构
Nginx源码文件主要放在src文件夹下:.├── core├── event├── http├── mail├── misc├── os└── stream输出结果显示有 6 个目录文件,以下是这些目录文件的功能:core :Nginx的核心源代码,包括常用数据结构的以及Nginx 内核实现的核心代码; event:Nginx事件驱动模型,以及定时器的实现相关...原创 2019-07-19 02:35:51 · 520 阅读 · 0 评论 -
Nginx源码解析——内存池
目录1.内存池的数据结构2.内存池的操作.创建内存池:销毁内存池重置内存池内存分配cleanup资源方法:内存池就是为了降低程序员犯错几率的: 模块开发者只需要关心内存的分配, 而释放则交由内存池来负责。Nginx内存池思路:把内存分配归结为大内存分配和小内存分配。若申请的内存大小比同页的内存池最大值 max 还大,则是大内存分配,否则为小内存分配。大块内存的分...原创 2019-07-17 02:46:51 · 484 阅读 · 0 评论 -
Nginx源码解析——线程池
nginx是采用多进程模型,master和worker之间主要通过pipe管道的方式进行通信,多进程的优势就在于各个进程互不影响。其实,nginx代码中也提供了一个thread_pool(线程池)的核心模块来处理多任务的。主要放在ngx_thread_pool.c文件中。线程池的数据结构task结构,为单链表组成任务队列,主要成员是event事件和handler回调方法id每次pu...原创 2019-07-23 02:26:48 · 872 阅读 · 0 评论 -
Nginx源码解析——连接模块
由于 Nginx 工作在 master-worker 多进程模式,若所有 worker 进程在同一时间监听同一个端口,当该端口有新的连接事件出现时,每个worker 进程都会调用函数ngx_event_accept 试图与新的连接建立通信,即所有worker 进程都会被唤醒,这就是所谓的“惊群”问题,这样会导致系统性能下降。幸好在Nginx 采用了ngx_accept_mutex 同步锁机制,即只...2019-08-05 03:15:12 · 623 阅读 · 0 评论