• nginx中slab实现

    日期:

    slab的一些结构体: typedef struct { ngx_atomic_t lock ; // 锁,因为slab在nginx中一般配合共享内存使用 size_t min_size; // 分配空间的最小值 size_t min_shift; // 该最小值对应的移位数 ngx_slab_page_t *pages; // 页数组 ngx_slab_page_t free; //...

  • nginx 配置文件解析

    日期:

    首先来看一下,配置文件解析时的数据结构,这里主要是ngx_conf_t, 这个结构保存了解析配置文件所需要的一些域,是一个非常重要的数据结构. struct ngx_conf_s{ char *name; // 当前解析的命令名 ngx_array_t *args; // 当前命令的所有参数 ngx_cycle_t * cycl...

  • nginx socket初始化

    日期:

    1. 一些相关的数据结构: // 监听端口配置信息,addrs是在该端口上所有监听地址的数组。 typedef struct { ngx_int_t family; in_port_t port; ngx_array_t addrs; /* array of ngx_http_conf_addr_t */ } ngx_http_conf_port_t; typedef struct { ngx_http_l...

  • nginx 建立连接

    日期:

    对于web server来说,必须能够监听到客户端的连接才能与之通信,这篇文章就看一下nginx是如何实现连接的建立。监听到新的连接实际上就是监听socket上的读事件,此时监听socket的已完成连接队列是非空的,可以非阻塞的调用accpet获取新到的连接。在nginx中每...

  • nginx共享内存

    日期:

    对于一个服务器模型来说,事件模型是至关重要的,nginx本身的高性能也归功于它的事件模型。一般来说,nginx的事件模型是基于epoll。而epoll中会调用3函数,epoll_create,epoll_ctl,epoll_wait. (1) 首先介绍一些相关的数据结构: typedef struct { ngx_int_t...

  • nginx 模块解析

    日期:

    nginx的模块非常之多,可以认为所有代码都是以模块的形式组织,这包括核心模块和功能模块,针对不同的应用场合,并非所有的功能模块都要被用到,附录A给出的是默认configure(即简单的http服务器应用)下被连接的模块,这里虽说是模块连接,但nginx不会像apa...

  • nginx编译报错error: can not detect int size

    日期:

    在64位的机器上进行对nginx进行编译配置,居然报错error: can not detect int size,原来是加上了with-cpu-opt选项. 正如某博客所说去掉cpu优化选项即可通过配置,但是对于有优化强迫症的IT工作者来说这是绝对不容许的. 经过一番研究,设置好CFLAGS参数即可在cpu...

  • Nginx + Tomcat 动静分离实现负载均衡

    日期:

    0.前期准备 使用Debian环境。安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等。 1.一份Nginx.conf配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46...

  • NGINX 1.9.1 中的 Socket 切分

    日期:

    NGINX发布的1.9.1版本引入了一个新的特性:允许使用SO_REUSEPORT套接字选项,该选项在许多操作系统的新版本中是可用的,包括DragonFly BSD和Linux(内核版本3.9及以后)。该套接字选项允许多个套接字监听同一IP和端口的组合。内核能够在这些套接字中对传入的...

  • 如何使用 Datadog 监控 NGINX(第三篇)

    日期:

    如果你已经阅读了前面的如何监控 NGINX,你应该知道从你网络环境的几个指标中可以获取多少信息。而且你也看到了从 NGINX 特定的基础中收集指标是多么容易的。但要实现全面,持续的监控 NGINX,你需要一个强大的监控系统来存储并将指标可视化,当异常发生时能...