nginx
newrtc
这个作者很懒,什么都没留下…
展开
-
nginx源码分析(9)-模块化(4)
模块的上下文是四个结构体定义的:ngx_core_module_t、ngx_event_module_t、ngx_http_module_t、ngx_mail_module_t,分别对应于四类模块。typedef struct { ngx_str_t name; void *(*create_conf)(ngx_cyc转载 2012-09-14 11:03:22 · 475 阅读 · 0 评论 -
nginx源码分析(7)-模块化(2)
http://blog.csdn.net/kenbinzhang/article/details/4656815分析nginx的模块化架构的实现方式,就要从ngx_module_t结构体入手。ngx_module_t的声明在src/core/ngx_conf_file.h中:#define NGX_MODULE_V1 0, 0, 0, 0, 0, 0, 1#d转载 2012-09-14 11:01:09 · 549 阅读 · 0 评论 -
nginx源码分析(8)-模块化(3)
接下来剖析模块的指令。模块的指令在源码中是ngx_command_t结构的变量,ngx_command_t的声明在src/core/ngx_conf_file.h中:struct ngx_command_s { ngx_str_t name; ngx_uint_t type; char转载 2012-09-14 11:02:26 · 505 阅读 · 0 评论 -
nginx源码分析(11)-进程启动分析(1)
nginx的进程启动过程是在ngx_master_process_cycle(src/os/unix/ngx_process_cycle.c)中完成的(单进程是通过ngx_single_process_cycle完成,这里只分析多进程的情况),在ngx_master_process_cycle中,会根据配置文件的worker_processes值创建多个子进程,即一个master进程和多个work转载 2012-09-14 11:05:24 · 594 阅读 · 0 评论 -
nginx源码分析(13)-运维与配置(1)
http://blog.csdn.net/kenbinzhang/article/details/4722359nginx现在已经支持很多功能,系统内已经实现的模块多达72个,这些模块提供了若干配置指令来设置和控制nginx的相关处理过程。 为了能够更深入的进行接下来的源码分析,利用一些篇幅讨论一下nginx的运维和配置相关的内容,主要参考了nginx的英文wiki资料转载 2012-09-14 11:07:57 · 1129 阅读 · 0 评论 -
nginx源码分析(14)-运维与配置(2)
事件模块的指令集主要是配置epoll、kqueue、select、poll等,这些指令控制nginx处理连接的方式,这些指令有: 1、accept_mutex语法形式:accept_mutex [on|off]默认值:on nginx使用accept mutex保护accept()系统调用。accept mutex在不同的系统上会使用原子指令实现或者使用文件转载 2012-09-14 11:08:36 · 912 阅读 · 0 评论 -
nginx源码分析(19)-方法(3)
nginx的三个部分:核心、事件模型/并发模型、应用模块,之前已经详细了分析了核心和事件模型/并发模型两个部分,也详细解释了nginx的模块化设计。之 前的分析采用了平铺直叙的方式,对源码中主要函数进行了流程化的分解和剖析,经过这种分析方式,对nginx的认识越来越全面和深入,相关的领域知识和背 景知识也越来越丰富。但是这种分析方法比较直白,分析不够深入和透彻,缺少总结和对比,只是阐述如何转载 2012-09-14 11:11:26 · 1584 阅读 · 1 评论 -
nginx源码分析(1)——启动过程
http://blog.csdn.net/chosen0ne/article/details/77282941. 重要的数据结构 1. ngx_module_t nginx中所有模块的类型都是ngx_module_t类型的,定义了模块的一些属性。nginx是完全模块化的,所有的组件都是模块,从而实现了nginx的高度松耦合。同时,我们在进行nginx模块转载 2012-10-29 14:05:43 · 1157 阅读 · 0 评论 -
nginx源码分析(5)-方法(2)
利用nginx wiki和互联网收集了不少nginx相关的文档资料,但是仔细阅读之后发觉对理解nginx架构有直接帮助的资料不多,一些有帮助的资料也要结合阅读部分源码细节才能搞清楚所述其是,可能nginx在非俄国之外的环境下流行不久,应用还很简单,相关的英文和中文文档也就不够丰富的原因吧。不过还是有一些金子的。如果要了解nginx的概况和使用方法,wiki足以满足需要,wiki上有转载 2012-09-14 10:59:40 · 649 阅读 · 0 评论 -
nginx源码分析(4)-方法(1)
看了几天的源码,进度很慢,过于关注代码实现的细节了,反而很难看清整体结构。于是问诸google寻找方法。大体上分析源代码都要经历三遍过程,第一遍是浏览,通过阅读源码的文档和注释,阅读接口,先弄清楚每个模块是干什么的而不关心它是怎么做的,画出架构草图;第二遍是精读,根据架构草图把系统分为小部分,每个部分从源码实现自底向上的阅读,更深入细致的理解每个模块的实现方式以及与模块外部的接口方式等,弄明白模块转载 2012-09-14 10:58:56 · 490 阅读 · 0 评论 -
nginx源码分析(2)- 概览
http://blog.csdn.net/kenbinzhang/article/details/4653202源码分析是一个逐步取精的过程,最开始是一个大概了解的过程,各种认识不会太深刻,但是把这些真实的感受也记录下来,觉得挺有意思的,可能有些认识是片面或者是不正确的,但可以通过后面更深入细致的分析过程,不断的纠正错误和深化理解。源码分析是一个过程,经验是逐步累积起来的,希望文字可以转载 2012-09-14 10:56:35 · 543 阅读 · 0 评论 -
nginx源码分析(15)-模块分析(1)
nginx的内部实现上用四个模块上下文结构把所有模块从实现上分开为四种,不同的模块上下文支持不同的模块钩子。如果抛开实现方式,仅仅从功能逻辑上来 区分,大致可以把所有模块分为三类,第一类是nginx的内核模块;第二类是http模块;第三类是mail模块。内核模块包含核心类模块、event类 模块和没有模块上下文结构的conf模块;http模块是所有的http类模块;mail模块是所有的mail类模转载 2012-09-14 11:09:11 · 712 阅读 · 0 评论 -
nginx源码分析(17)-模块分析(3)
前面已经分析了nginx的事件处理机制的构建阶段,也分析过nginx的进程模型,利用上一篇文章中总结的并发模型设计的知识,先总结介绍一下nginx的并发模型,然后剖析nginx事件处理机制运行阶段的处理过程。nginx 的进程模型采用的是prefork方式,预先分配的worker子进程数量由配置文件指定,默认为1。master主进程创建监听套接口并监听客户连接, 每个worker子进程独自转载 2012-09-14 11:10:45 · 495 阅读 · 0 评论 -
nginx源码分析(1)- 缘起
http://blog.csdn.net/kenbinzhang/article/details/4653201nginx是一个开源的高性能web服务器系统,事件驱动的请求处理方式和极其苛刻的资源使用方式,使得nginx成为名副其实的高性能服务器。nginx的源码质量也相当高,作者“家酿”了许多代码,自造了不少轮子,诸如内存池、缓冲区、字符串、链表、红黑树等经典数据结构,事件驱动模型,ht转载 2012-09-14 10:55:20 · 798 阅读 · 0 评论 -
nginx源码分析(3)- 自动脚本
nginx的自动脚本指的是configure脚本程序和auto子目录下面的脚本程序。自动脚本完成两件事情,其一是检查环境,其二是生成文件。生成的文件有两类,一类是编译代码需要的Makefile文件,一类是根据环境检查结果生成的c代码。生成的Makefile很干净,也很容易阅读。生成的c代码有三个文件,ngx_auto_config.h是根据环境检查的结果声明的一些宏定义,这个头文件被include转载 2012-09-14 10:57:16 · 606 阅读 · 0 评论 -
nginx源码分析(6)-模块化(1)
源码的src/core目录下实现了不少精巧的数据结构,最重要的有:内存池ngx_pool_t、缓冲区ngx_buf_t、缓冲区链 ngx_chain_t、字符串ngx_str_t、数组ngx_array_t、链表ngx_list_t、队列ngx_queue_t、基于hash 的关联数组ngx_hash_t、红黑树ngx_rbtree_t、radix树ngx_radix_tree_t等,这些数据结构转载 2012-09-14 11:00:22 · 491 阅读 · 0 评论 -
nginx源码分析(10)-启动过程分析
http://blog.csdn.net/kenbinzhang/article/details/4681694nginx有两个重要头文件:ngx_config.h和ngx_core.h。src/core/ngx_config.h文件中包含的是和操作系统相关的宏定义和头文件,其中又会包含objs/ngx_auto_headers.h和src/os/unix/ngx__config.转载 2012-09-14 11:04:24 · 595 阅读 · 0 评论 -
nginx源码分析(12)-进程启动分析(2)
第四个剖析的是worker子进程的执行函数ngx_worker_process_cycle(src/os/unix/ngx_process_cycle.c)。static voidngx_worker_process_cycle(ngx_cycle_t *cycle, void *data){ ngx_uint_t i; ngx_connecti转载 2012-09-14 11:06:33 · 474 阅读 · 0 评论 -
nginx源码分析(16)-模块分析(2)
对一个高性能服务器来说,一般都要求处理速度快和资源占用小,尤其是当服务器遇到C10K问题的时候。要做到处理速度足够快,其并发模型的设计相当关键;而要做到资源尤其是内存资源的占用少,就要依赖于其资源分配和资源管理的方案设计。网 上有一些比较apache、lighttpd和nginx的文章,一般认为apache的功能完善,但是并发能力较弱,资源占用较多,一般并发量达到一千 以上,服务已经比较吃转载 2012-09-14 11:09:50 · 721 阅读 · 0 评论 -
nginx源代码分析
Nginx可以开启多个进程,每个进程拥有最大上限128个子线程以及一定的可用连接数。如果你希望使用线程可以在配置文件中设置worker_threads这个参数,但这个参数在Nginx官方手册上没有。只有通过阅读源代码才看到。最大客户端连接数等于进程数与连接数的乘积,连接是在主进程中初始化的,一开始所有连接处于空闲状态。每一个客户端请求进来以后会通过事件处理机制,在Linux是Epoll,在转载 2013-01-11 09:47:13 · 625 阅读 · 0 评论