




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
nginx源代码分析与导读,核心系统研发 - 叔度 2010-03-26,目录,源码结构 重要概念与基础设施 事件驱动架构 http处理流程 邮件代理流程,nginx源码结构,代码量 大约11万行c代码 源代码目录结构 core (主干和基础设置) event (事件驱动模型和不同的io复用模块) http (http服务器和模块) mail (邮件代理服务器和模块) os (操作系统相关的实现) misc (杂项),nginx架构特点,非阻塞 事件驱动 单线程io复用 一个主进程和少量工作进程 高度模块化,目录,源码结构 重要概念与基础设施 事件驱动架构 http处理流程 邮件代理流程,内存池,作用 简化内存管理 避免内存碎片 避免内存泄露 分类 生命周期 全局 连接 请求 大小,内存池布局图示一,内存池布局图示二,缓冲区管理,缓冲区对象 指针 内存 文件 重要的标志位 last_buf last_in_chain flush in_file memory,缓冲区管理(2),缓冲链 缓冲区的一个单链表 高级 输出链 in/free/busy output filter context,字符串操作,基本类型 ngx_str_t nginx自己的字符串api 内存操作相关 字符串格式化 字符串查找 格式转换 base64/url/utf-8 字符串和数字之间的转换,数据结构,基本的adt 数组 链表 队列 hash表 红黑树 radix树 特点 先添加,再设置 按块分配内存,日志操作,错误日志 等级 调试 访问日志 日志格式 多日志 location相关 轮转,配置文件,指令 名称 类型 设置函数 offset 解析过程 值的初始化与合并,配置文件(2),块 events/http/server/upstream/location 变量 $ 内置的 自定义的,目录,源码结构 重要概念与基础设施 事件驱动架构 http处理流程 邮件代理流程,主进程和工作进程,主进程(master) 监视工作进程的状态 当工作进程死掉后重启一个新的 处理信号和通知工作进程 工作进程(worker) 处理客户端请求 从主进程处获得指令做相应的事情,主进程和工作进程(2),处理流程示意图,主进程的处理流程,工作进程的处理流程,进程间通信方式,信号 频道 socketpair 命令 共享内存 统计 原子操作与自旋锁 互斥量,事件类型,基本数据结构ngx_event_t 读、写 超时 回调函数 处理方式 立即 邮递,时间缓存,避免多余的gettimeofday(2) 缓存内容 时间值 格式化后的时间字符串 时间精度与更新频率 轮询后刷新 定期更新,事件和计时器处理流程,计时器的实现,动作 添加 删除 获得最小值 用红黑树实现 复杂度o(log n),工作进程之间的协调,多核利用 cpu亲缘性 惊群问题 缘由 解决方案 锁 延迟,工作进程之间的协调(2),accept互斥量,io复用模型,系统相关的io接口 水平触发(ngx_use_level_event) select poll event port 边缘触发(ngx_use_clear_event) kqueue epoll,高级io的使用,系统特性 sendfile writev o_direct mmap aio tcp/ip选项 tcp_cork tcp_nodelay tcp_defer_accept,重新加载配置的流程,热代码更新,目录,源码结构 重要概念与基础设施 事件驱动架构 http处理流程 邮件代理流程,重要的数据结构,连接(ngx_connection_t) http连接(ngx_http_connection_t) http请求(ngx_http_request_t) uri headers ,virtual server,重要信息 ngx_http_core_srv_conf_t 定位流程,位置(location),location树 纯文本 正则表达式 location专属配置 命名的location,http上下文,作用域分类 main server location 获取方式 ngx_http_get_module_main_conf ngx_http_get_module_srv_conf ngx_http_get_module_loc_conf 设置方式 ngx_http_get_module_ctx ngx_http_set_ctx,http处理过程,接收数据 分析请求 找到对应的virtual server 找到对应的location 执行phase处理器 产生response内容 过滤header 过滤body 将输出发送给客户端,请求分析过程,阶段 请求行 头部 技巧 状态机 ngx_strx_cmp函数,phase和处理器,phase种类 post_read server_rewrite find_config rewrite post_rewrite preaccess access post_access try_files content log 处理器(动作表) checker handler next,phase和处理器,过滤器链,单链表 只过滤输出 header过滤器 body过滤器 输出 ngx_http_send_header ngx_http_output_filter ngx_http_header_filter ngx_http_copy_filter ngx_http_write_filter,过滤器链举例,http处理流程举例,静态文件 curl -i http:/localhost/,keep-alive的处理,重用内存 连接的内存收缩 终结 超时 请求次数,子请求(subrequest),需求与原理 例子 addion filter ssi filter,内部重定向,返回一个与请求不一样的url 举例 try_files index/random_index post_action send_error_page upstream_process_headers,upstream机制,钩子 防止进程阻塞在某处(同步-异步) 模块 f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西师范大学现代文理学院《智能纺织品设计与应用》2023-2024学年第二学期期末试卷
- 宣城职业技术学院《机器学习原理及应用实验》2023-2024学年第二学期期末试卷
- 石家庄城市经济职业学院《影视艺术学》2023-2024学年第二学期期末试卷
- 江苏省江阴市四校2025年第二学期高三数学试题期末考试试卷含解析
- 金华职业技术学院《机器视觉技术》2023-2024学年第二学期期末试卷
- 湖南省长沙市田家炳实验中学2025届初三第二次统一检测试题生物试题含解析
- 江苏省宿迁市沭阳县华冲高中2025年第二学期高三物理试题期末考试试卷含解析
- 昆玉职业技术学院《T项目管理课程设计》2023-2024学年第二学期期末试卷
- 汕头市南澳县2025年三年级数学第二学期期末调研试题含解析
- 重庆三峡职业学院《市政工程计量》2023-2024学年第二学期期末试卷
- 北京市丰台区2025届高三一模试卷语文试题(含答案)
- 安徽省合肥市高三下学期第二次教学质量检测数学试卷(含答案)
- 中职生对口升学模拟考试医学类专业课综合试卷
- (完整版)特殊教育与随班就读
- 旋流风口RA-N3选型计算表格
- 2025年河南工业贸易职业学院单招职业倾向性测试题库往年题考
- 《VB程序结构基础》课件教程
- 个人房屋租赁合同标准版范本
- DBJ50-T-157-2022房屋建筑和市政基础设施工程施工现场从业人员配备标准
- 2024年中考模拟试卷地理(湖北卷)
- 沙塘湾二级渔港防波堤工程施工组织设计
评论
0/150
提交评论