Nginx
文章平均质量分 80
看,未来
墨家学徒
展开
-
【Nginx 源码学习】平滑重启,源码追踪
文章目录平滑重启难点平滑重启流程源码探秘平滑重启难点重启意味着新旧接替,在交接任务的过程中势必会存在新旧server并存的情形,因此,最主要的问题在于如何保证新旧server可以并存,如果重启前后的server端口一致,如何保证两者可以监听同一端口。平滑重启流程nginx reload流程(1)向 master 进程发送 HUP 信号(reload命令)(2)master 进程校验配置文件语法是否正确(3)master 进程打开新的监听端口(4)master 进程用新配置启动新的 wor.原创 2022-01-07 13:43:55 · 1570 阅读 · 0 评论 -
【Nginx 源码学习】Nginx 架构设计与主流程分析
文章目录进程模型模块化结构体系工作流程Master 初始化worker初始化upstream工作流程启动流程main 入口ngx_master_process_cycle 进入多进程模式ngx_start_worker_processes 创建工作进程ngx_spawn_process fork工作进程ngx_worker_process_cycle 子进程的回调函数ngx_worker_process_init 工作进程初始化进程模型Nginx 采用多进程单线程模型:1、nginx在启动后,在.原创 2022-01-06 11:40:46 · 2892 阅读 · 2 评论 -
【Nginx 源码学习】推荐:Hash表
文章目录nginx 哈希结构的特色数据设计图数据结构初始化哈希表查找一个元素nginx 哈希结构的特色Nginx的hash模块主要有如下几个特点:1、静态只读。当初始化生成hash表结构后,是不能动态修改这个hash表结构的内容。2、将内存利用最大化。Nginx的hash表,将内存利用率发挥到了极致。3、查询速度快。Nginx的hash表做了内存对齐等优化。4、主要解析配置数据。数据设计图数据结构hash表的元素结构:typedef struct { void .原创 2022-01-05 21:30:37 · 1590 阅读 · 3 评论 -
【Nginx 源码学习】Nginx 的缓冲区
文章目录缓冲区结构设计缓冲区设计图创建一个缓冲区分配 chain 节点分配一个 buf 链表合并buf链表从free chain链中获取一个空闲buf回收链表空间缓冲区结构设计网络缓冲区的重要性不言而喻,就如高并发下的消息队列一样。redis的系列里面没有写缓冲区,muduo 的那个缓冲区设计的就挺不错。缓冲区内存块的数据结构 ngx_buf_t:typedef struct ngx_buf_s ngx_buf_t;/* * Nginx缓冲区 */struct ngx_buf_s {.原创 2022-01-05 20:59:11 · 1676 阅读 · 1 评论 -
【Nginx 源码学习】Nginx 中的 “deque“
文章目录数据结构结构示意图设计优点创建链表初始化链表插入元素双向链表数据结构//链表typedef struct { ngx_list_part_t *last; //指向最后一个数组元素 ngx_list_part_t part; //首元素 size_t size; //限制每个数组元素占用空间大小,也就是用户要存储的一个数据所 占用的字节数必须小于或等于size。 ngx_uint_t nalloc; //最多可存.原创 2022-01-05 15:05:29 · 600 阅读 · 1 评论 -
【Nginx 源码学习】动态数组
文章目录结构图结构定义创建数组销毁数组添加元素操作结构图1、Nginx的数组只存储比较小的数据2、数组的元素长度在创建数组的时候就固定死了。但是数组个数,会自动扩容。3、数组的数据结构和元素内存都会分配在Nginx的pool内存池上。4、数组回收会去检查pool内存池,看是否可以将数组内存交还给内存池。结构定义/* 数组Array数据结构 */typedef struct { void *elts; /* 指向数组第一个元素指针*/ ngx_uint_.原创 2022-01-05 11:42:50 · 1295 阅读 · 1 评论 -
【Nginx 源码学习】内存池 及 优秀案例赏析:Nginx内存池设计
文章目录关于设计内存池之我的想法内存池案例malloc 底层原理jemalloc && tcmallocNginx内存池设计基础数据结构源码分析ngx_create_pool 创建内存池ngx_destroy_pool 销毁内存池ngx_reset_pool 重置内存池ngx_palloc 分配内存ngx_pfree 内存清理cleanup机制关于设计内存池之我的想法1、首先,你的开发环境允许你写内存池。(不要跟我说你拿着Python来写个内存池哈)2、其次,多学学开源的/不开源的优.原创 2022-01-04 22:22:37 · 738 阅读 · 2 评论 -
我的 Nginx 入门指南
文章目录说明Nginx 简介Ubuntu 下 安装 Nginx安装方式一:安装方式二:nginx卸载干净Nginx TCP负载均衡配置上手Nginx,从配置文件开始main 全局配置events模块stream负载均衡算法指令参数nginx 监控说明本篇侧重点在于 TCP负载均衡,或者可以说,没有多少HTTP负载均衡相关的。所以如果不是你的菜,可以省些时间。虽然我现在不排斥任何一门新技术,但是让我跨越web这一块直接上手HTTP负载均衡,跨度有点大哈。还是得循序渐进,有机会再说吧。Nginx 简.原创 2022-01-03 20:25:06 · 880 阅读 · 0 评论 -
nginx 惊群问题解决 && 条件变量虚假唤醒为什么不学着点?
希望打开此篇对你能有所帮助。原创 2021-10-11 19:54:58 · 387 阅读 · 0 评论 -
Nginx 的异步非阻塞体现在哪里?从理论分析到源码验证
文章目录理论分析源码体现worker进程对事件模块的初始化:worker 开始循环干活了ngx_process_events_and_timersngx_epoll_process_eventsngx_event_process_posted理论分析1、首先要明确一点,这里讲的 “异步” 是业务层面上的。2、那业务层面的异步是怎么个异步法?同步异步的概念我就不说了,前面文章有。异步最重要的标志就是通知,通知,通知!!!这两天很累,不想多说话,长话短说吧:以epoll为例,(nginx有提供sel.原创 2021-10-10 17:01:38 · 680 阅读 · 0 评论 -
Nginx(5):进程绑定CPU:从nginx源码里给你刨功能出来
希望打开这篇对你有所帮助。原创 2021-10-05 17:57:41 · 1977 阅读 · 0 评论 -
Nginx(4):守护进程,一份nginx实现,一份我的实现,看着拿呗
愿打开此篇对你有所帮助。原创 2021-10-02 22:26:28 · 1227 阅读 · 0 评论 -
Nginx(1):入门篇,技术点铺开
文章目录基础知识Nginx是什么?Nginx可以提供的服务配置nginx正向代理与反向代理负载均衡动静分离深入一点nginx -s reload 过程Nginx epoll 模型Nginx 进程模型master 提供服务worker提供服务master-workers 的机制的好处再深入一点Nginx 进程模型主进程与工作进程交互工作进程之间交互Nginx模块内存池的设计哈哈,我终于对nginx下手了嘛。第一篇不知道要起个什么名字,入门吧,又不是很小白。设计与架构吧,又不是很深刻,而且不知道哪天就被我的.原创 2021-09-24 15:50:51 · 1099 阅读 · 2 评论