E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Nginx源码分析
Nginx源码分析
- 基础数据结构篇 - 缓冲区结构 ngx_buf.c
Nginx的buf缓冲区数据结构,主要用来存储非常大块的内存。ngx_buf_t数据结构也贯穿了整个Nginx。Nginx的缓冲区设计是比较灵活的。1.可以自定义管理业务层面的缓冲区链表;2.也可以将空闲的缓冲区链表交还给内存池pool->chain结构。缓冲区ngx_buf_t是nginx处理大数据的关键数据结构,它既应用于内存数据也应用于磁盘数据。数据结构定义缓冲区内存块的数据结构ngx_bu
initphp
·
2016-01-30 13:00
Nginx源码分析
- 基础数据结构篇 - 数组结构 ngx_array.c
前面一章我们介绍了Nginx的内存池的数据结构。Nginx的内存管理都是围绕内存池来实现的,包括array数组类型也是基于Nginx的pool来实现数据结构。Nginx的Array结构设计得非常小巧,主要用于存储小块内存。Nginx的数组每个元素的大小是固定的。数据结构定义ngx_array_t数组的基础数据结构/*数组Array数据结构*/ typedefstruct{ void*elts;/*
initphp
·
2016-01-28 16:00
Nginx源码分析
- 基础数据结构篇 - 内存池 ngx_palloc.c
Nginx的内存管理是通过内存池来实现的。Nginx的内存池的设计非常的精巧,很多场景下,我们可以将Nginx的内存池实现抽象出来改造成我们开发中的内存池。内存池一般我们使用malloc/alloc/free等函数来分配和释放内存。但是直接使用这些函数会有一些弊端:1.虽然系统自带的ptmalloc内存分配管理器,也有自己的内存优化管理方案(申请内存块以及将内存交还给系统都有自己的优化方案,具体可
initphp
·
2016-01-26 17:00
Nginx源码分析
- 初探Nginx的架构
文章目录基础数据结构篇1.
Nginx源码分析
-基础数据结构篇-内存池ngx_palloc.c2.
Nginx源码分析
-基础数据结构篇-数组结构ngx_array.c3.
Nginx源码分析
-基础数据结构篇-
initphp
·
2016-01-25 19:00
Nginx源码分析
-内存池
Nginx源码分析
-内存池 Nginx的内存池实现得很精巧,代码也很简洁。总的来说,所有的内存池基本都一个宗旨:申请大块内存,避免“细水长流”。
·
2015-11-12 10:57
nginx
nginx源码分析
之http解码实现
分析nginx是如何解析并且存储http请求的。对非法甚至恶意请求的识别能力和处理方式。可以发现nginx采用状态机来解析http协议,有一定容错能力,但并不全面相关配置 跟解码有关的配置 merge_slashes 语法merge_slasheson|off默认值on上下文httpserver说明支持解析请求行时,合并相邻的斜线。例如,一个请求http://www.example.com/foo
ronin47
·
2015-11-07 16:00
nginx
http
nginx源码分析
之开篇
nginx源码构思精巧,每每阅读颇有收获,写此文与各码农分享 阅读从main开始,流程非常清晰 /* 系统错误初始化,将构建ngx_sys_errlist */ ngx_strerror_init(); /* 选项处理 */ ngx_get_options(argc, argv); /* 时间初始化, 当前时间:ngx_current_msec */ ngx_time_init(); /*
·
2015-11-07 13:33
nginx
NGINX源码分析
——概览
一、概况 Nginx可以开启多个进程,每个进程拥有最大上限128个子线程以及一定的可用连接数。最大客户端连接数等于进程数与连接数的乘积,连接是在主进程中初始化的,一开始所有连接处于空闲状态。每一个客户端请求进来以后会通过事件处理机制,在Linux是Epoll,在FreeBSD下是KQueue放到空闲的连接里。 如果设置了线程数,那么被填充的连接会在子线程中处理,
·
2015-10-31 08:58
nginx
nginx源码分析
—内存池结构ngx_pool_t及内存管理
Content 0. 序 1. 内存池结构 1.1 ngx_pool_t结构 1.2 其他相关结构 1.3 ngx_pool_t的逻辑结构 2. 内存池操作 2.1 创建内存池 2.2 销毁内存池 2.3 重置内存池 2.4 分配内存 2.4.1 ngx_palloc()函数分析 2.4.2 n
·
2015-10-27 13:10
nginx
Nginx学习笔记(五) 源码分析&内存模块&内存对齐
Nginx源码分析
&内存模块 今天总结了下C语言的内存分配问题,那么就看看Nginx的内存分配相关模型的具体实现。
·
2015-10-27 12:16
nginx
nginx源码分析
之线程池
线程池出来时让人眼前一亮,随笔写了一篇nginx另一个性能杀手锏-线程池。想让更多人关注这个例好。现在想来有点偏,改为'nginx开发杀手锏-线程池'更贴切点。来自大神的指点agentzh:你这是滥用nginx的线程池。线程池的引入是为了处理不得不阻塞的I/O,比如文件I/O.将之用于本可以100%非阻塞的网络I/O是巨大的退步,让nginx退化为Apacheworkerfpm了,靠OS线程来拼并
那一剑的风情
·
2015-06-29 23:00
nginx源码分析
之upstream设计
关于nginx的神秘武器江湖从没停止对它的渲染,没错的就是upstream。nginx有很多杀手锏比如高性能、高并发、强悍的稳定性。但是如果没有upstream它将失色很多。upstream让nginx成为代理服务器,可以连接fastcgi协议的php,可以连接memcached、redis、mongodb、mysqlhandlersocket,uwsgi协议的服务器,甚至一切服务器。本文将一步步
那一剑的风情
·
2015-05-26 03:00
nginx源码分析
之http解码实现
分析nginx是如何解析并且存储http请求的。对非法甚至恶意请求的识别能力和处理方式。可以发现nginx采用状态机来解析http协议,有一定容错能力,但并不全面相关配置跟解码有关的配置merge_slashes 语法merge_slasheson|off默认值on上下文httpserver说明支持解析请求行时,合并相邻的斜线。例如,一个请求http://www.example.com/foo//
liujiyong7
·
2015-04-02 17:00
数据结构
源码
nginx
linux
服务器
待读系列
nginx源码分析
系列(理论):http://blog.csdn.net/yankai0219/article/category/1316055http://blog.csdn.net/kenbinzhang
qinyushuang
·
2015-04-01 19:00
nginx源码分析
笔记1
一直想分析nginx源码,但是一直俗务缠身,现在终于有空闲来进行这这件事。这算是开篇吧,也借此激励自己完成这个系列的分析。源码之前,了无秘密!---不知道谁说的,但是很对。
occupy8
·
2015-02-01 22:00
Nginx源码分析
1--------编写Nginx扩展模块
近日来申请通过CSDN准专家,为了顺利在六个月后升级为认证专家,并对得起这个勋章,我感觉不能松懈博客的更新频率以及质量了。C/C++windows下的开发是我相对来说做的比较多的地方,对于Linux下的服务器开发等等也算是半路出家,恰逢近来在研究分布式存储,涉及到了Nginx扩展开发以及配置,查阅了好多的资料发现Nginx配置部署起来相当的容易,但是源代码是真的晦涩难懂,经常会看的我们百思不得其解
yue7603835
·
2015-01-28 23:00
源码
c
nginx
服务器
开源代码
web服务器(容器)-------------tomcat等ebook
--tomcat等ebook jetty-documentation-9.0.6.pdf:http://www.t00y.com/file/76780007
Nginx
sdckx
·
2014-11-23 19:00
web服务器(容器)-------------tomcat等ebook
--tomcat等ebook jetty-documentation-9.0.6.pdf:http://www.t00y.com/file/76780007
Nginx
mycsdn
·
2014-11-23 19:00
nginx源码分析
--框架设计 & master-worker进程模型
Nginx的框架设计—进程模型在这之前,我们首先澄清几点事实:nginx作为一个高性能服务器的特点,其实这也是所有的高性能服务器的特点,依赖epoll系统调用的高效(高效是相对select/poll这些系统调用的,底层有一个链表和红黑树,避免了轮询,减少了用户空间和系统空间之间的数据传递等),非阻塞(所有的操作都是非阻塞,这样),多进程(master-slave进程模型),这些事实使得nginx成
鱼思故渊
·
2014-11-19 19:52
nginx源码分析
nginx
nginx源码分析
--高性能服务器开发 常见进程模型
1、高性能服务器对一个高性能服务器来说,处理速度快和资源占用小是典型特性,尤其是当服务器遇到C10K问题的时候(网络服务器在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪,这被称为C10K问题)。要做到处理速度足够快,其并发模型的设计相当关键,而要做到资源尤其是内存资源的占用少,就要依赖于其资源分配和资源管理的方案设计。服务器的并发模型设计是网络编程中很关键的一个部分,服务器的并发量取决
鱼思故渊
·
2014-11-08 20:56
nginx源码分析
linux
nginx
nginx源码分析
--master和worker进程模型
一、Nginx整体架构正常执行中的nginx会有多个进程,最基本的有masterprocess(监控进程,也叫做主进程)和wokerprocess(工作进程),还可能有cache相关进程。一个较为完整的整体框架结构如图所示:二、核心进程模型启动nginx的主进程将充当监控进程,而由主进程fork()出来的子进程则充当工作进程。nginx也可以单进程模型执行,在这种进程模型下,主进程就是工作进程,没
鱼思故渊
·
2014-11-08 20:45
nginx源码分析
nginx
Nginx源码分析
之启动过程
注:粘贴过来内容格式有点乱,原文可以移步: http://www.srhang.me/blog/2014/09/24/nginx-bootstrap/ nginx的启动过程代码主要分布在src/core以及src/os/unix目录下。启动流程的函数调用序列:main(src/core/nginx.c)→ngx_init_cycle(src/core/ngx_cycle.c)→
superhj1987
·
2014-09-25 22:00
nginx
Nginx源码分析
之基本数据结构
原文链接: http://srhang.me/blog/2014/07/25/nginx-data-structure/ 引言 nginx实现中有很多结构体,一般命名为ngx_xxx_t。这些结构体分散在许多头文件中。src/core/ngx_core.h中把几乎所有的头文件都集合起来。也因此造成了nginx各部分源代码的耦合。但实际上nginx各个部分逻辑划分还是很明确的,整体上是一种松散的
superhj1987
·
2014-08-15 09:00
nginx
nginx源码分析
之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化。 从配置文件中读取初始化信息 与网络有关的配置命令主要有两个:listen和sever_name。首先先了解这两个命令的用法。 listen listen命令设置nginx监听地址,nginx从这里接受请求。对于IP协
·
2014-06-16 19:00
nginx
nginx源码分析
--GDB调试
利用gdb[i]调试nginx[ii]和利用gdb调试其它程序没有两样,不过nginx可以是daemon程序,也可以以多进程运行,因此利用gdb调试和平常会有些许不一样。当然,我们可以选择将nginx设置为非daemon模式并以单进程运行,而这需做如下设置即可:daemonoff;master_processoff;这是第一种情况:这种设置下的nginx在gdb下调试很普通,过程可以[iii]是这
yusiguyuan
·
2014-06-01 22:00
源码
nginx
分析
nginx源码分析
--配置结构体在内存中的分布
1、http类module的配置结构体的组织结构在Nginx中,http类的module允许创建3种配置结构体:main_conf、srv_conf、loc_conf,分别通过create_main_conf、create_srv_conf、create_loc_conf钩子创建。每种配置结构体的指针存储在对应的指针数组中,以ctx_index为数组下标。见下图所示。ngx_http_conf_c
yusiguyuan
·
2014-05-21 21:00
nginx
Nginx源码分析
链接
nginx-0.8.38源码探秘:http://blog.csdn.net/ccdd14/article/details/5872312
nginx源码分析
:http://blog.sina.com.cn
chenlycly
·
2014-05-03 21:00
nginx源码分析
--配置文件解析
ngx-conf-parsing对Nginx配置文件的一些认识:配置指令具有作用域,分为全局作用域和使用{}创建其它作用域。同一作用域的不同的配置指令没有先后顺序;同一作用域是否能使用相同的指令,和对相同指令的处理由各模块自行决定整个Nginx的运行时各模块行为都和配置指令密切相关每个配置指令都只能在预先定义好的作用域中使用配置指令解析使用递归的方式配置解析相关代码量巨大,本文势必很冗长。所以,都
yusiguyuan
·
2014-04-26 10:00
nginx
配置
nginx源码分析
--配置文件解析
Nginx的配置解析相关的部分比较绕,比如为何要有4重指针,比如NGX_MAIN_CONF,loc_conf,NGX_DIRECT_CONF有什么区别呢?这些我前面的blog都有些涉及,这次主要是把配置这块完全拿出来然后来分析下。首先来看配置解析时的数据结构,这里主要是ngx_conf_t,这个结构保存了解析配置文件所需要的一些域,这个是非常重要的一个数据结构,我们详细来看这个结构:structn
yusiguyuan
·
2014-04-26 09:00
nginx
配置
nginx源码分析
--配置文件详解
对Nginx配置文件的一些认识:配置指令具有作用域,分为全局作用域和使用{}创建其它作用域。同一作用域的不同的配置指令没有先后顺序;同一作用域是否能使用相同的指令,和对相同指令的处理由各模块自行决定整个Nginx的运行时各模块行为都和配置指令密切相关每个配置指令都只能在预先定义好的作用域中使用配置指令解析使用递归的方式配置解析相关代码量巨大,本文势必很冗长。所以,都要做好心理准备。同时,由于mai
yusiguyuan
·
2014-04-25 17:00
nginx
配置
nginx源码分析
--nginx上下文结构初始化
说在前面:本文的讨论基于的nginx版本是1.2.1。文章对于nginx的一些背景知识(如什么是模块,上下文等)没有过多提及,本文适合对nginx有一定了解的同学。 ngx_conf_t*cf;做过nginx模块开发,或者是有学习过nginx源码的同学会对这个结构体非常眼熟了。ngx_cycle.c:251conf.ctx=cycle->conf_ctx; ctx(context)在nginx里随
yusiguyuan
·
2014-04-25 16:00
nginx
配置
nginx源码分析
--event事件驱动初始化
1.在nginx.c中设置每个核心模块的indexngx_max_module=0; for(i=0;ngx_modules[i];i++){ ngx_modules[i]->index=ngx_max_module++; }2.进入函数ngx_init_cycle,调用每个核心模块的create_conffor(i=0;ngx_modules[i];i++){ if(ngx_modules[i]
yusiguyuan
·
2014-04-24 08:00
nginx
nginx源码分析
--内存池ngx_poll_t 内存池管理
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!Content0.序1.内存池结构1.1ngx_pool_t结构1.2其他相关结构1.3ngx_pool_t的逻辑结构2.内存池操作2.1创建内存池2.2销毁内存池2.3重置内存池2.4分配内存2.4.1ngx_palloc()函数分析2.4.2ngx
yusiguyuan
·
2014-03-09 21:00
nginx
ngx_poll_t
nginx源码分析
--数据结构 哈希 ngx_hash_t
Content0.序1.hash结构1.1ngx_hash_t结构1.2ngx_hash_init_t结构1.3ngx_hash_key_t结构1.4hash的逻辑结构2.hash操作2.1NGX_HASH_ELT_SIZE宏2.2hash函数2.3hash初始化2.4hash查找3.一个例子3.1代码3.2如何编译3.3运行结果3.3.1bucket_size=64字节3.3.2bucket_s
yusiguyuan
·
2014-03-09 21:00
hash
ngx_hash_t
nginx源码分析
--链表结构体ngx_list_t
Content1.链表结构1.2ngx_list_t的逻辑结构2.1创建链表3.一个例子3.2如何编译4.小结0.序 本文继续介绍nginx的容器——链表。链表实现文件:文件:./src/core/ngx_list.h/.c。.表示nginx-1.0.4代码目录,本文为/usr/src/nginx-1.0.4。1.链表结构 1.1ngx_list_t结构 nginx的链表(头)结构为ngx_lis
yusiguyuan
·
2014-03-09 19:00
nginx
ngx_list_t
nginx源码分析
--数据结构ngx_array_t
Content0.序1.数组结构1.1ngx_array_t结构1.2ngx_array_t的逻辑结构2.数组操作2.1创建数组2.2销毁数组2.3添加1个元素3.一个例子3.1代码3.2如何编译3.3运行结果4.小结0.序本文开始介绍nginx的容器,先从最简单的数组开始。数组实现文件:文件:./src/core/ngx_array.h/.c。.表示nginx-1.0.4代码目录,本文为/usr
yusiguyuan
·
2014-03-09 17:00
nginx
nginx源码分析
—数组结构ngx_array_t
本博客(http://blog.csdn.net/livelylittlefish )贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!0.序本文开始介绍nginx的容器,先从最简单的数组开始。数组实现文件:文件:./src/core/ngx_array.h/.c。.表示nginx-1.0.4代码目录,本文为/usr/src/nginx-1.0.4。1.数组结构1.1ngx_arra
天外飞鱼
·
2014-02-15 18:00
nginx
nginx源码分析
好的资料
0.1.0 sourcecode:http://hg.nginx.org/nginx/rev/551102312e19 http://hg.nginx.org/nginx/tags 内存池:http://www.alidata.org/archives/1390http://blog.chinaunix.net/uid-24830931-id-3764858.htmlhttp://blog.csd
yuanyu5237
·
2014-01-09 00:00
nginx源码分析
好的资料
0.1.0 source code: http://hg.nginx.org/nginx/rev/551102312e19 http://hg.nginx.org/nginx/tags 内存池: http://www.alidata.org/archives/1390 http://blog.chinaunix.net/uid-24830931-id-
yuanyu5237
·
2014-01-09 00:00
nginx
Nginx源码分析
系列4:Nginx里的双向链表
花了半个小时看了买的书籍,原理已经掌握,根据书上写了代码如下:typedefstruct { u_char*str; ngx_queue_tqEle;//位置任意 intnum; }TestNode; ngx_int_tcompTestNode(constngx_queue_t*a,constngx_queue_t*b) { TestNode*aNode=ngx_queue_data(a,Tes
强子哥哥
·
2013-12-08 18:00
nginx
nginx
双向列表
Nginx源码分析
系列3:根据时间转化成年月日时分秒的函数
voidngx_gmtime(time_tt,ngx_tm_t*tp) { ngx_int_tyday; ngx_uint_tn,sec,min,hour,mday,mon,year,wday,days,leap; /*thecalculationisvalidforpositivetime_tonly*/ n=(ngx_uint_t)t; days=n/86400; /*January1
强子哥哥
·
2013-12-07 23:00
Nginx源码分析
系列2:系统错误提示信息汇总
errorno.0---Successerrorno.1---Operationnotpermittederrorno.2---Nosuchfileordirectoryerrorno.3---Nosuchprocesserrorno.4---Interruptedsystemcallerrorno.5---Input/outputerrorerrorno.6---Nosuchdeviceorad
强子哥哥
·
2013-12-07 22:00
nginx
Nginx源码分析
系列1:序言
Nginx现在比较火啊,还是看一看吧,这么火的HTTP服务器,不看没天理啊而且单位也是用了NGINX服务器来响应HTTP请求学以致用挺好! ~~~~~~~~~~~~~随便搜了下,以下域名用了sug.so.360.cn-------nginxwww.baidu.com- bws +apachewww.qq.com-------squidwww.taobao.com---tenginewww.si
强子哥哥
·
2013-12-07 21:00
nginx
nginx
nginx源码分析
之ngx_core_commands
ngx_core_commands是核心模块指令,该变量的定义是在src/core/nginx.c中定义的。该变量为一个数组,每个元素都是ngx_command_t类型,下面逐步解析这个变量。ngx_command_t类型:(src/core/ngx_conf_file.h)typedefngx_command_sngx_command_t; structngx_command_s{ ngx_s
joescott
·
2013-11-28 16:00
nginx源码分析
--内存对齐处理
1.nginx内存对齐主要是做2件事情:1)内存池的内存地址对齐;2)长度按照2的幂取整.因为前面结构体已经是对齐了,如果后面的内存池每一小块不是2的幂,那么后面的就不能对齐2.通用内存对齐理论内存对齐:数据项只能存储在地址是数据项大小的整数倍的内存位置上例如int类型占用4个字节,地址只能在0,4,8等位置上。数据的对齐(alignment)指数据的地址和由硬件条件决定的内存块大小之间的关系。一
·
2013-10-21 16:00
Nginx源码分析
--数据对齐posix_memalign和memalign函数
posix_memalign函数()/* *背景: * 1)POSIX1003.1d * 2)POSIX标明了通过malloc(),calloc(),和realloc()返回的地址对于 * 任何的C类型来说都是对齐的 *功能:由posix_memalign分配的内存空间,需要由free释放。 *参数: * p 分配好的内存空间的首地址 *
·
2013-10-20 22:00
Nginx源码分析
之变量
(转自http://blog.lifeibo.com/blog/2011/12/17/nginx-varibles.html) nginx中的变量在nginx中的使用非常的多,正因为变量的存在,使得nginx在配置上变得非常灵活。 我们知道,在nginx的配置文件中,配合变量,我们可以动态的得到我们想要的值。最常见的使用是,我们在写access_log的格式时,需要用到多很多变量。 而这些变量
lwlnuligongzuo
·
2013-09-16 18:00
nginx
Nginx源码分析
-事件循环
Nginx源码分析
-事件循环事件循环这个概念貌似在windows编程中提得更多,Linux程序却很少提及这个概念。
pi9nc
·
2013-09-04 14:00
Nginx源码分析
--基本数据类型的别名
typedefintptr_t ngx_int_t;typedefuintptr_t ngx_uint_t;typedefintptr_t ngx_flag_t;intptr_t在#/usr/include/stdint.h中,下面是stdint.h部分代码#ifndef_STDINT_H #define_STDINT_H1 #include #include
·
2013-08-12 15:00
Nginx源码分析
--字符串处理
ngx_string.cvoidngx_strlow(u_char*dst,u_char*src,size_tn);将src的前n个字符转换成小写存放在dst字符串当中,调用者需要保证dst指向的空间大于等于n。操作不会对原字符串产生变动。如要更改原字符串,可以:ngx_str_tstr=ngx_string("helloworld");ngx_strlow(str->data,str->data
·
2013-08-11 16:00
上一页
1
2
3
4
5
6
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他