存档

‘源码分析’ 分类的存档

nginx变量机制

2012年8月8日 没有评论 11,666 次浏览

初识变量 前面曾讲过nginx配置文件的解析过程,也就是nginx如何在启动的过程中对用户设定的配置文件进行解析,并将配置文件中的各个配置项与配置值转换为对应的nginx内部变量值,从而能让nginx按照用户预想的情况去运行。 如果只是一些比较简单并且确定的功能配置需求,那么nginx用户能够很方便的做出相应的设定,比如用户想要设置工作进程数为2个,那么配置文件中这样写即可:worker_processes... [阅读更多]

dlmalloc解析连载完整word文档

2011年11月15日 6 条评论 11,114 次浏览

把cu个人博客的这篇文章转载过来,呵呵。 目 录 1. 本文档介绍 2.边界标记法 3. 分箱式内存管理 4. 核心结构体malloc_state 5. 内存分配相关函数 5.1 函数dlmalloc 5.2 函数tmalloc_small 5.3... [阅读更多]

利用timer_resolution设置减少gettimeofday调用的次数

2011年9月10日 没有评论 13,380 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 http://wiki.nginx.org/NginxCoreModule 配置选项:timer_resolution 设置语法:timer_resolution... [阅读更多]

分类: nginx, 源码分析 标签: ,

打开nginx调试

2011年9月10日 没有评论 9,879 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 第一:打开debug模式进行编译,简单操作如下: sudo... [阅读更多]

分类: nginx, 源码分析 标签: ,

快速定位指针函数名称

2011年9月10日 2 条评论 7,276 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 nginx中应用了大量的指针,函数指针也不例外,到处可见,比如: rev->handler(rev); ls->handler(c); … 这样的回调处理大大增加了我们阅读/理解nginx源码的难度,因为一下子根本就不知道(或者说很难)这个函数指针指向的到底是哪个函数,有没有方便的办法快速知道这个函数指针指向的是哪个函数呢?有,看看下面的实例: 看下ngx_event_accept.c源文件的函数ngx_event_accept(ngx_event_t... [阅读更多]

分类: nginx, 源码分析 标签: ,

模块的统一架构

2011年9月10日 没有评论 4,743 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 当我们configure配置nginx后,将在一个名为objs的文件夹里找一个ngx_modules.c源文件,该文件内就包含了我们待编译生成的nginx程序即将包含的模块。 nginx的模块可以简单点分为core、conf、event、http和mail五种类型,这从nginx源码的目录结构也可以依稀看出。 封装nginx模块的结构体为ngx_module_s,定义如下: typedef... [阅读更多]

分类: nginx, 源码分析 标签: ,

nginx的信号管理

2011年9月10日 没有评论 4,660 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 Nginx对所有发往其自身的信号进行了统一管理,这部分相关实现代码不多,而且十分清晰易懂,下面来逐步解析。 首先,Nginx对一种信号以及该信号的处理封装了一个对应的名为ngx_signal_t的结构体: typedef... [阅读更多]

分类: nginx, 源码分析 标签: ,

利用gdb调试nginx

2011年9月10日 24 条评论 16,587 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 利用gdb调试nginx和利用gdb调试其它程序没有两样,不过nginx可以是daemon程序,也可以以多进程运行,因此利用gdb调试和平常会有些许不一样。当然,我们可以选择将nginx设置为非daemon模式并以单进程运行,而这需做如下设置即可: daemon... [阅读更多]

分类: nginx, 源码分析 标签: ,

获得nginx程序执行流程

2011年9月10日 没有评论 5,189 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 nginx函数众多,指针复杂,加上大量函数指针的干扰,要仅靠阅读源代码来理清nginx程序的执行流程难度较大,这一节,我将提供一个获得nginx程序执行流程的快速方法,方便大家阅读源码。 gcc提供了一个名为“-finstrument-functions”编译选项,也许不少人都用过,这个选项有什么作用,我这里就省略暂且不讲,不过它将是这一节的主角,阅读了下面的内容,大家会逐渐了解,如果需要马上知道的,可以google或查阅man手册。 第一: 首先,我们要把这个“-finstrument-functions”选项添加到nginx源码的编译过程里,这可以通过修改Makefile做到。大家肯定知道*nix下编译源代码的三步骤: ./configure make make... [阅读更多]

分类: nginx, 源码分析 标签: ,

IO复用模型的统一

2011年9月10日 没有评论 4,878 次浏览

请关注最新修正合订:http://lenky.info/ebook/ 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保留链接:http://lenky.info/,谢谢。 nginx内统一的IO复用模型一共有8种,分别列表如下: select:标准的IO复用模型,几乎所有的类unix系统上都有提供,但性能相对较差。如果在当前系统平台找不到更优的IO复用模型,那么nginx默认编译并使用select复用模型。当然,如果当前系统平台提供有更优的IO复用模型,那么我们也可以通过使用–with-select_module或–without-select_module配置选项来启用或禁用select复用模型模块的编译。 poll:也属于标准的IO复用模型,但理论上比select复用模型要优。同select复用模型类似,可以通过使用–with-poll_module或–without-poll_module配置选项来启用或禁用poll复用模型模块的编译。 kqueue:在系统FreeBSD... [阅读更多]

分类: nginx, 源码分析 标签: ,