看Nginx也有几星期了,还没看完的还是很多,事件模型的具体实现、accept_mutex等、http框架等。一边看书,也一边旁敲侧击地搜罗了其他知识。因此,打算一边学习,一边按照自己的流程和理解简单写点总结,提纲如下。
1 NginX 简介
Igor Sysoev和F5项目
NginX特点:高并发,低内存,少进程,事件驱动,配置人性化。
各服务器比较
基于模块化的系统架构:核心框架、HTTP框架、事件框架(一切都充斥着“中央集权”的味道)
进程模型:master只负责管理worker,模块由worker运行; 循环。
src目录总览 core和os
http event mail etc
2 编译和使用
ngx_module.c 数组
make install/ upgrade (见各Makefile)
平滑升级是几个意思
为了一个Warning修改Makefile
信号-USR2 和 各种-SIGXXX
3 配置文件的书写,性能调优
4 简单HTTP模块的组成
一个乱七八糟的mytest
5 NginX解析配置文件的流程
tyoedef struct {...} my_conf_t;
ngx_module_t
ngx_http_module_ctx_t ngx_command_t [...]
8个回调 数组
(create and merge) set和offset
struct{
* main_conf
* srv_conf
* loc_conf
}和offsetof宏
6 针对4-5的实例
涉及str_t,array_t
编写过程中遇到的烦心事
强制转化
static写不写
type检查是自动的
弹出了文件而非页面
7 事件驱动
select
epoll
libev
8 Nginx中基于epoll的事件模块的设计
ngx_event源码
instance标志位
9 内存管理
mallloc和memalign原理
buddy和slab简述
ngx_palloc源码
ngx_slab源码,以及实际用到slab的地方
10 陶辉老师访谈总结