合集-Nginx源码分析

摘要:上一篇已经通过对ngx_palloc 这个内存池(pool)管理的核心函数--内存分配函数进行解析,我们窥探到了Nginx内存管理的主体方法还有对于大内存需求的解决之道,同时也对管理内存池的数据结构有了更深一步的认识,通过这些认识我们可以得到以下这样一张数据结构的示意图:图3 Nginx内存管理数据结构示意图 做说明下,这里示意的是有需求大内存分配时的结构示意图,为了图示的方便,我们将 large_t 特殊话到了和 large所在的同一个pool单元里面,其实实际运行中并非一定在同一个pool单元中。如果没有大内存需求时 large_t 也并不存在。 分析完了,内存分配函数ngx_pa... 阅读全文
posted @ 2012-06-07 09:39 Java研究者 阅读(4389) 评论(0) 推荐(2) 编辑
摘要:分析nginx源码,谈到模块module是必然的。纵观nginx源码,可以说模块module机制是整个nginx的骨架。因此,对nginx的源码进行分析,那么对模块module就需要有一个基本的认知。在浅谈开始,我们要明确nginx 模块构架是从编译阶段开始的,不像apache那样可以动态的添加模块,nginx使用的是静态模块。这应该也是nginx 为何效率高的原因之一。对nginx的模块认知,必须要提到一篇大大有名的文章,我想也是每个分析nginx源码的人都拜读过的文章《Emiller's Guide To Nginx Module Development 》里面的内容虽然少了点,但 阅读全文
posted @ 2012-06-09 09:39 Java研究者 阅读(4987) 评论(0) 推荐(2) 编辑
摘要:接上一篇,通过关键代码段的分析、和一些关键函数的摘录对nginx 运用module 模块构架对nginx.conf 进行解析执行的流程有了一个基本认识。流程总结如下: 1、获取全部参与编译的模块module 进行统计编号。 2、根据module 模块的个数分配 配置信息资源的指针空间。 3、创建NGX_CORE_MODULE 核心模块的配置信息,并将指针空间中对应模块编号的指针进行设置。 4、初始化conf 配置信息,解析参数ngx_conf_param,解析配置文件ngx_conf_parse。 以上第4步中解析配置文件ngx_conf_parse过程又可分为: ... 阅读全文
posted @ 2012-06-25 15:52 Java研究者 阅读(3613) 评论(0) 推荐(1) 编辑
摘要:搭建nginx服务器时,主要的配置文件 nginx.conf 是部署和维护服务器人员经常要使用到的文件, 里面进行了许多服务器参数的设置。那么nginx 以模块 module为骨架的设计下是如何运用模块 module来解析并执行nginx.conf配置文件下的指令的呢?在探究源码之前,需要对nginx下的模块 module 有个基本的认知(详情参考前面的博文 Nginx 源码分析-- 浅谈对模块module 的基本认知)同时也要对nginx中常用到的一些结构有个基本的了解如: 内存池pool 管理相关的函数、ngx_string 的基本结构等(详情参考前面的博文),若不然看代码的时候可能不.. 阅读全文
posted @ 2012-06-18 01:07 Java研究者 阅读(6133) 评论(4) 推荐(2) 编辑
摘要:对于一个web服务器程序来说,对字符串处理的需求是必须的。由于web环境下的各种编码,也导致了web服务器程序字符串处理的繁杂性。在nginx源码中,ngx_string.c 这个文件就是来应对字符串处理的一些源码,源码中经常的使用到了这里中的函数,本文对ngx_string.c 进行一些简单的分析,以方便阅读其他源码。 我们来看它的基本数据结构:typedef struct { size_t len; u_char *data;} ngx_str_t; 比较明显的可以看出,ngx_str_t 只是将字符串添加了一个标志长度的字段,并无其他特殊结构。 ... 阅读全文
posted @ 2012-06-13 09:01 Java研究者 阅读(6186) 评论(1) 推荐(1) 编辑
摘要:应该说大家对这两个数据结构相当熟悉了,因此我们一并将它们进行分析,瞧一瞧nginx是如何实现它们的。在此篇之前,我们已经对nginx 内存池(pool)进行了分析,在此基础上来理解ngnix对它们的实现将变得非常简单,特别是内存池(pool)中的ngx_palloc 函数在这两个结构中多次用到,若不清楚想了解原理的可以看看我前面写的文章,它返回的是在内存池分配好空间了的首地址。一、ngx_array 数组:struct ngx_array_s { void *elts; ngx_uint_t nelts; size_t size; ng... 阅读全文
posted @ 2012-06-10 10:40 Java研究者 阅读(3301) 评论(2) 推荐(1) 编辑

点击右上角即可分享
微信分享提示