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源码分析
--内存池
内存池是nginx很重要的数据结构,结构图大概如下。ngx_palloc.h/**Copyright(C)IgorSysoev*Copyright(C)Nginx,Inc.*/#ifndef_NGX_PALLOC_H_INCLUDED_#define_NGX_PALLOC_H_INCLUDED_#include#include/**NGX_MAX_ALLOC_FROM_POOLshouldbe(n
theanarkh
·
2024-09-05 04:01
nginx
02
Nginx源码分析
之总结内存开辟的相关函数(ngx_alloc.c,ngx_palloc.c)
02
Nginx源码分析
之总结内存开辟的相关函数(ngx_alloc.c,ngx_palloc.c)前言:写这一篇的目的是为了方便接下来的阅读,否则每次都要对应查找相应的函数,非常麻烦。
Mango酱
·
2024-02-07 15:53
Nginx源码分析
nginx
数据结构
nginx源码分析
笔记(二):nginx整体结构、进程模型
1、nginx的整体结构master属于root用户worker进程属于nobody,权限比较低,安全性比较高。受到攻击时。2、nginx进程模型一个master多个worker进程。master是监控进程,不处理具体业务,管理worker进程。worker处理具体业务,包括连接和读写信号。3、master和worker之间采用信号或者共享内存进行通讯。看代码。4、worker进程如果死掉,mas
奥斯特洛司机
·
2024-02-04 19:51
nginx源码分析
-1
使用gdb查看函数上下文:gdbattachnginx的work线程监听端口状态时:断点打在ngx_http_process_request并通过浏览器触发请求时:
Jacob0707
·
2023-12-31 04:01
nginx
nginx源码分析
-2
这一章内容讲述nginx进程的创建和工作进程是如何开展工作的。ngx_cycle_s结构体是nginx中非常重要的结构体之一,它代表了nginx运行时的环境。在nginx的生命周期中用于保存各种与运行时状态相关的信息。在ngx_start_worker_processes中会根据配置的工作进程数量,使用ngx_spawn_process函数创建新的进程,用于启动子进程来处理网络连接、缓存刷新、日志
Jacob0707
·
2023-12-31 04:01
nginx
nginx源码分析
-3
这一章内容讲述nginx中的事件是如何一步步添加到epoll实例中的。在初始化http连接的函数ngx_http_init_connection中,nginx为http连接初始化了处理请求的回调函数,之后调用ngx_handle_read_event函数对可读数据进行处理。这里只为连接设置read而没有设置write是因为nginx使用的是异步非阻塞的事件驱动模型。由于是异步的,写事件的触发往往是
Jacob0707
·
2023-12-31 04:30
nginx
Nginx源码分析
之----auto/types/typedef脚本
微信公众号:
Nginx源码分析
关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!
郑尔多斯
·
2023-11-04 10:02
Nginx源码分析
-内存管理
Nginx源码分析
内存池内存池结构与操作系统相关的内存操作函数申请内存池申请小块内存申请大块内存内存的释放释放大块内存销毁内存池重置内存池共享内存参考链接内存池Nginx使用内存池管理进程内的内存,可分为两类
bobo-zero
·
2023-10-29 21:35
nginx
运维
Nginx源码分析
之 --- auto/init脚本
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾上一篇文章我们详细的讲解了auto/option文件,该文件主要是为了初始化传递给configure的命令参数。本文继续讲解configure脚本调用的第二个文件auto/init。auto/init这个脚本主要是进行一些变量的初始化工作,为后续的Makefile文件进行
郑尔多斯
·
2023-10-19 03:16
nginx源码分析
之--auto/sources脚本
回顾上一篇文章我们详细的讲解了auto/init文件,该文件主要是初始化一些文件目录,便于后面的编译过程。configure执行auto/init之后就会执行auto/sources文件,所以本文分析一下auto/sources文件,这个文件虽然内容很多,但是结构非常简单,全部是初始化操作,为后面的Makefile文件生成各种依赖。比如编译Core模块用到的依赖,编译pcre模块用到的依赖等等。a
郑尔多斯
·
2023-09-23 21:09
自娱自乐代码人的源码分析系列汇总
目录一、ptmalloc源码分析二、Lua源码分析三、
Nginx源码分析
四、Memcache源码分析一、ptmalloc源码分析《ptmalloc源码分析-ptmalloc的初始化实现(01)》《ptmalloc
老码农zhuli
·
2023-09-14 22:38
websocket
网络协议
网络
c语言
Nginx源码分析
之--编译器相关脚本
微信公众号:
Nginx源码分析
关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!
郑尔多斯
·
2023-09-11 13:58
定义了一个ngx_http_hello_init的方法,将ngx_http_hello_log_handler函数挂载到NGX_HTTP_LOG_PHASE日志处理阶段
对
Nginx源码分析
-实战篇-编写一个阶段化的模块(25)原文https://blog.csdn.net/initphp/article/details/72912723的理解。
katerdaisy
·
2023-08-10 16:45
http
网络协议
网络
nginx(七十五)nginx与Vary响应头细节探讨
一Vary①nginx与Vary有关联的地方
nginx源码分析
处理Vary响应头的逻辑CORS和缓存gzip_vary1)gzip_varyon如果设置为'开启'2)服务器'返回数据'时会在头部带上"Vary
wzj_110
·
2023-08-03 00:09
nginx
Vary
Nginx源码分析
- 初探Nginx的架构(01)
Nginx是我们日常使用非常多的一款服务器。Nginx的源码写的非常漂亮,是c语言学习和进阶的最好的学习资料。我们这里分析的是1.13.1的版本。一、源码目录下面我们先看下Nginx的目录结构:Nginx的源码主要分布在src/目录下,而src/目录下主要包含三部分比较重要的模块。core:包含了Nginx的最基础的库和框架。包括了内存池、链表、hashmap、String等常用的数据结构。eve
alpha_2017
·
2023-07-19 19:27
Nginx
【
Nginx源码分析
】Nginx的编译
周生政nginx构建使用shell语言生成makefile,以及ngx_auto_config.h,ngx_auto_headers.h,ngx_modules.c。其中ngx_auto_config.h为各种常量定义,ngx_auto_headers.h为头文件,ngx_modules.c为nginx模块。makefile用来组织编译流程。configure主流程auto/options根据co
weixin_34417200
·
2023-07-19 19:27
运维
shell
操作系统
nginx源码分析
和openresty源码分析
nginxnginx可以作为网关(负载均衡,路由规则,限流,访问控制),缓存服务器,web服务器(可以使用lua开发,openresty框架),反向代理服务器。支持http,https,http/2,grpc,tcp,udp,websocket协议。源码结构src/core(底层核心结构)启动入口和基础的数据结构和算法。nginx.c就是入口,初始化,启动多进程。数据结构ngx_arrayngx_
你听不到
·
2023-04-02 17:23
nginx
网络
Nginx源码分析
--内存池
1.问题引入使用C语言编程时,一般使用malloc和free进行动态内存申请和释放。如果一不小心忘记了调用free进行释放,很容易造成内存泄露。另一方面,频繁地进行malloc和free操作,很容易造成内存碎片。与此同时,因为malloc支持多线程同时操作,所以,使用同步锁是不可避免的。当然,根据malloc的实现原理,线程在进行malloc操作的时候,如果不能获得同步锁,就会另外在进程的heap
编程界的谢菲尔德
·
2023-04-02 17:21
nginx
高性能服务器
java
开发语言
Nginx源码分析
-内存池
Nginx源码分析
-内存池Nginx的内存池实现得很精巧,代码也很简洁。总的来说,所有的内存池基本都一个宗旨:申请大块内存,避免“细水长流”。
路飞大大
·
2023-04-02 17:11
Memory-Pool
nginx
alignment
代码分析
struct
数据结构
server
Nginx源码分析
(2)之——共享内存管理之slab机制
Refer:《深入剖析Nginx》Chapter3.5共享内存《深入理解Nginx–模块开发与架构解析》Chapter16slab共享内存Nginx源码版本:nginx-1.10.1下面直接分析源代码,在代码里进行注释:--------------------------------nginx-1.10.1/src/core/ngx_slab.h--------------------------
m4trixl9
·
2023-04-02 17:34
nginx
内存管理
nginx
Nginx源码分析
之-auto/types/value和auto/types/uintptr_t
微信公众号:
Nginx源码分析
关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!
郑尔多斯
·
2023-03-22 18:52
Nginx源码分析
——master进程与worker进程(二)
一、说明在前面一章,我们大致了解了nginx进程的启动,没有深入的去看进程到底做做了些什么事情,本章我们就看看master进程工作到底在做什么。二、函数分析./src/os/unix/ngx_process_cycle.c>ngx_master_process_cycle(ngx_cycle_t*)ngx_new_binary=0;delay=0;sigio=0;live=1;for(;;){
sinom21
·
2022-11-30 10:00
nginx源码
nginx
运维
linux
关于Nginx文章迁移
对nginx的文章内容进行迁移
Nginx源码分析
——Nginx在MacOS环境下源码安装
Nginx源码分析
——Nginx目录结构
Nginx源码分析
——Nginx架构分析
Nginx源码分析
——main函数
sinom21
·
2022-11-30 10:00
nginx源码
nginx
运维
vue.js
Nginx源码分析
——worker进程源码与工作原理(二)
一、说明前面很多内容,可以说大致了解了下nginx是进程是怎么启动的,进程之间是如何通信的,花一些时间或多或少也都还是能看得懂的,后面要去了解ngx_worker_process_cycle函数,worker进程所有的实现或者核心基本都是在这个函数里面,可能需要花蛮长的时间去消耗去理解。二、方法主流程staticvoidngx_worker_process_cycle(ngx_cycle_t*cy
sinom21
·
2021-09-13 20:34
nginx源码
nginx
运维
lua
nginx源码分析
——事件模块
2019独角兽企业重金招聘Python工程师标准>>>1.事件模块概述事件处理框架所要解决的问题是如何收集,管理,分发事件。这里所说的事件,主要以网络事件和定时器事件为主,而网络事件中又以TCP网络事件为主。由于网络事件与网卡中断处理程序,内核提供的系统调用密切相关,所以网络事件的驱动取决于不同的操作系统平台,在同一操作系统中也受制于不同的操作系统内核版本。因此不同操作系统有不同的事件驱动机制。基
weixin_34347651
·
2020-09-16 07:32
运维
操作系统
网络
nginx源码分析
——模块
2019独角兽企业重金招聘Python工程师标准>>>1.模块介绍高度模块化的设计是nginx的架构基础。在nginx中,除了少量的核心代码,其他一切皆为模块。这种模块化设计同时具有以下几个特点:高度抽象的模块接口所有的模块都遵循着同样的ngx_module_t接口设计规范,这减少了整个系统中的变数。模块接口非常简单,具有很高的灵活性模块的基本接口ngx_module_t足够简单,只涉及模块的初始
weixin_33907511
·
2020-09-16 07:58
运维
python
nginx源码分析
——event模块
源码:nginx1.12.0一、简介nginx是一款非常受欢迎的软件,具备高性能、模块化可定制的良好特性。之前写了一篇nginx的http模块分析的文章,主要对http处理模块进行了分析讲解,同时也涉及了nginx模块化的内容。至于nginx高性能的原因,希望能够在在这篇文章中就自己对于这方面的理解给大家分享一下。nginx的event处理模型包含两个方面:高效的IO处理函数,事件的异步处理(可选
weixin_33895657
·
2020-09-16 07:27
运维
epoll
Nginx源码分析
——Nginx的进程模型
一、Nginx的功能简介Nginx("EngineX"),一个业界使用率非常高的轻量级高性能HTTP和反向代理服务器,也提供IMAP/POP3/SMTP等代理服务器功能。近年,由于Nginx专业团队不断提升其稳定性和各项服务性能指标,在很多方面已经超越著名的Apache服务器。由于Nginx是开源的,国内使用它作为Web服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六
skyleung
·
2020-09-16 07:50
Nginx
源码分析
nginx
源码
Nginx源码分析
之 长短连接
Nginx源码分析
之长短连接:Nginx作为proxy,其长短连接有2部分,一部分是client一部分是server。
Mrpre
·
2020-09-16 07:03
nginx
nginx源码分析
—模块及其初始化
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!Content0.序1.nginx有哪些模块?2.nginx如何描述这些模块?2.1模块数据结构2.1.1ngx_module_t结构2.1.2ngx_command_t结构2.2模块类图3.nginx如何组织这些模块?3.1全局数组ngx_modul
阿波321
·
2020-09-16 07:55
高性能服务器
Nginx源码分析
- 基础数据结构篇 - 内存池 ngx_palloc.c(02)
目录内存池数据结构定义ngx_pool_t内存池主结构ngx_pool_data_t数据区域结构ngx_pool_large_t大数据块结构ngx_pool_cleanup_t自定义清理回调的数据结构数据结构图具体函数实现内存分配ngx_alloc和ngx_calloc创建内存池ngx_create_pool销毁内存池ngx_destroy_pool重设内存池ngx_reset_pool使用内存池
老码农zhuli
·
2020-09-15 17:28
Nginx源码分析
nginx源码分析
之内存池实现原理
建议看本文档时结合nginx源码;1.1什么是内存池?为什么要引入内存池?内存池实质上是接替OS进行内存管理,应用程序申请内存时不再与OS打交道,而是从内存池中申请内存或者释放内存到内存池,因此,内存池在实现的过程中,必然有一部分操作时从OS中申请内存,或者释放内存到OS,如下图所示:图1内存池的引入可有效解决两个问题:(1)降低应用程序与OS之间进行频繁内存和释放的系统调用,进而降低程序运行期间
逍遥子_
·
2020-09-15 17:16
linux
c/c++
架构设计
Nginx源码分析
-内存池
转载申明:本文可以任意转载,但需注明原文地址,谢谢!Nginx的内存池实现得很精巧,代码也很简洁。总的来说,所有的内存池基本都一个宗旨:申请大块内存,避免“细水长流”。一、创建一个内存池nginx内存池主要有下面两个结构来维护,他们分别维护了内存池的头部和数据部。此处数据部就是供用户分配小块内存的地方。//该结构用来维护内存池的数据块,供用户分配之用。typedefstruct{u_char*la
Marcky
·
2020-09-15 16:58
Nginx源码分析
Nginx学习笔记(二十):内存池分析
这里推荐阿里数据平台的博文《
Nginx源码分析
-内存池》。Nginx内存池的设计也是蛮漂亮的,大块内存以及小块内存都有考虑到,这里很需要学习其思想,以后非常有可能会用到。
时间文盲
·
2020-09-15 16:40
深入理解Nginx
Nginx学习笔记系列
nginx源码分析
—core模块callback
作者:阿波链接:http://blog.csdn.net/livelylittlefish/article/details/7262750Content0.序1.Core模块的配置结构2.create_conf分析3.init_conf分析4.小结0.序在中,简单介绍了如何调用core模块的callback,并简单列出其定义及其初始化,本文将重点阐述callback做什么。1.Core模块的配置结
阿波321
·
2020-09-15 05:42
高性能服务器
nginx源码分析
—hash结构ngx_hash_t(v1.0.4)
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!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.3h
阿波321
·
2020-08-24 22:37
高性能服务器
nginx源码分析
-ngx_get_options函数及如何添加自定义option
《音视频应用开发系列文章目录》ngx_get_options函数分析staticngx_int_tngx_get_options(intargc,char*const*argv){u_char*p;ngx_int_ti;//循环遍历argvfor(i=1;i
KayChanGeek
·
2020-08-21 18:52
音视频应用开发
[
nginx源码分析
]nginx handler 模块解析
nginx除去配置解析和初始化,就是根据请求根据状态机一步步执行流程,那么本节主要讲解首先是整个nginx对于一个客户端请求大致请求流程,其次是根据这个流程来写自己的handler模块。nginx接受到一个client请求调用流程:1ngx_event_accept主要是accept连接生成并初始化connection2ngx_http_init_connection函数主要设置rev和wev事件
youkuxiaobin
·
2020-08-18 10:13
nginx
Nginx源码分析
(25篇)
Nginx源码分析
-初探Nginx的架构
Nginx源码分析
-基础数据结构篇-内存池ngx_palloc.c
Nginx源码分析
-基础数据结构篇-数组结构ngx_array.c
Nginx源码分析
-基础数据结构篇
AAA小肥杨
·
2020-08-16 17:00
Nginx
Nginx源码分析
:3张图看懂启动及进程工作原理
图一:nginx启动及内存申请过程分析任何程序都离不开启动和配置解析。ngx的代码离不开ngx_cycle_s和ngx_pool_s这两个核心数据结构,所以我们在启动之前先来分析下。内存申请过程分为3步假如申请的内存小于当前块剩余的空间,则直接在当前块中分配。假如当前块空间不足,则调用ngx_palloc_block分配一个新块然后把新块链接到d.next中,然后分配数据。假如申请的大小大于当前块
-缘故-
·
2020-08-16 11:10
nginx
源码分析
Nginx源码分析
- HTTP模块篇 - TCP连接建立过程(21)
目录监听套接字初始化函数ngx_http_optimize_serversNginx整个连接的过程上一章,我们讲解了HTTP模块是如何初始化的。这一章节,主要讲解监听套接字初始化函数ngx_http_optimize_servers和Nginx整个连接的过程监听套接字初始化函数ngx_http_optimize_serversngx_http_optimize_servers主要处理Nginx服务
阿里十年老码农zhuli
·
2020-08-13 14:23
Nginx源码阅读
nginx源码分析
之启动流程---http框架
一http框架在哪里启动在
nginx源码分析
之启动流程—主框架中,我们知道会调用ngx_conf_parse来解析配置文件,该函数中会通过一个无限的for循环,调用ngx_conf_read_token
Mr.zhang0325
·
2020-08-11 12:30
nginx
nginx源码分析
----解析upstream配置
nignx解析配置文件时,当遇到一下配置时,会做哪些事情?upstreamtest.balancer.com{1.1.1.1:80;2.2.2.2:80;}一、存储upstream配置的三大结构体首先需要解决upstream配置的存储问题,nginx是通过ngx_http_upstream_main_conf_t,ngx_http_upstream_srv_conf_t,ngx_http_upst
Mr.zhang0325
·
2020-08-11 12:30
nginx
Nginx源码分析
- 基础数据结构篇 - hash表结构 ngx_hash.c(07)
目录数据结构定义ngx_hash_elt_thash表的元素结构ngx_hash_thash表结构ngx_hash_init_thash表初始化结构数据结构图具体函数实现查找一个元素ngx_hash_find创建一个hash表ngx_hash_initNginx的hash表结构和我们之前阅读memcached的时候看到的会有很大的差别。笔者在阅读Nginx的hash模块的时候,阅读了好几天,比较不
阿里十年老码农zhuli
·
2020-08-11 03:25
Nginx源码阅读
nginx源码分析
—reuseport的使用
本文主要介绍nginx中reuseport的使用,文中代码较多,阅读本文需要读者对nginx事件模块以及nginx配置过程有了解。由于nginx比较复杂,且笔者对nginx的理解有限,文章难免存在疏忽之处,敬请指出,万分感谢!一、reuseport的配置及解析reuseport通过listen指令来配置,配置如下:listen443reuseport;listen指令由ngx_http_core_
nice_wen
·
2020-08-09 10:05
Nginx
nginx源码分析
nginx源码分析
1———进程间的通信机制二(自旋锁)
自旋锁的相关介绍自旋锁的释义自旋锁与其他的锁最大的区别就是自旋锁不会引起调用者睡眠(非睡眠锁),也就是始终是可执行状态。如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里,看是否该自旋锁的保持者已经释放了锁。自旋锁的适用场景当锁的使用时间很短的时候,就可以采用自旋锁,这样开销很小。如果时间很长,锁一直自旋,又不能调度其他的程序,cpu资源将被大量占用,这样就不是很合适。对于长时间的锁,应该使
sina_yangyang
·
2020-08-02 18:44
nginx
Nginx源码分析
- 主流程篇 - 多进程的惊群和进程负载均衡处理(15)
目录Nginx解决惊群和进程负载均衡处理的要点具体的实现1.ngx_process_events_and_timers进程事件分发器2.ngx_trylock_accept_mutex获取accept锁3.ngx_enable_accept_events和ngx_disable_accept_events4.ngx_event_process_posted事件队列处理5.ngx_process_e
阿里十年老码农zhuli
·
2020-07-13 05:46
Nginx源码阅读
Nginx源码分析
--数据对齐posix_memalign和memalign函数
posix_memalign函数()/**背景:*1)POSIX1003.1d*2)POSIX标明了通过malloc(),calloc(),和realloc()返回的地址对于*任何的C类型来说都是对齐的*功能:由posix_memalign分配的内存空间,需要由free释放。*参数:*p分配好的内存空间的首地址*alignment对齐边界,Linux中,32位系统是8字节,64位系统是16字节*s
unix21
·
2020-07-10 05:31
C语言
nginx源码分析
之header小写问题以及C开源项目调试技巧
写在前面我为什么要写博客,总感觉东西是自己,知道就知道了。为什么一定要写下来呢?我也不知道。前言nginx开启HTTP2模式下header头全部小写,导致前端取header头出错。HTTP2模式下,header会压缩,并采用霍夫曼编码的压缩方式。推测可能,HTTP2如果header头大小写敏感的话,可能压缩效果不是很好。为什么?组合数学,信息论?此不在本文讨论范畴。header头为什么会小写,这些
plusme-0
·
2020-07-09 22:14
nginx
c
clion
debug
Nginx源码分析
-事件循环
http://blog.csdn.net/marcky/article/details/6025651转载申明:本文可以任意转载,但需注明原文地址,谢谢!事件循环这个概念貌似在windows编程中提得更多,Linux程序却很少提及这个概念。本文所提及的事件循环其实就是workercycle,由于此处将关注的不再是worker进程,而是worker进程在循环过程中关于事件处理的环节,因此就盗用了事件
拉里山姆
·
2020-07-09 18:59
nginx
上一页
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
其他