Nginx学习笔记(五)

Nginx如何通过连接池处理网络请求

 

   对于每一个worker进程,都有一个ngx_cycle_t这样的数据结构,其中有三个比较重要的数组:connections、read_events、write_events

  • connections:

        在http://nginx.org/en/docs中找到Core functionality中的worker_connections:

Sets the maximum number of simultaneous connections that can be opened by a worker process.

It should be kept in mind that this number includes all connections (e.g. connections with proxied servers, among others), not only connections with clients. Another consideration is that the actual number of simultaneous connections cannot exceed the current limit on the maximum number of open files, which can be changed by worker_rlimit_nofile.

       

          默认的大小是512个连接,包括所有的连接,包括与客户端、上游服务器、代理服务器等的连接,通常情况下是需要修改的;

  • read_events、write_events:

        收到connections数量的影响,通过序号一一对应;

 

 

不同的worker进程之间的通信-------共享内存

        nginx进程间的通信主要有两种,分别是信号和共享内存;共享内存主要用于数据的同步;

  • 由于多个worker之间之间共享一块内存,一定会存在竞争关系,因此需要锁(早期信号量的方式会造成进程的休眠,nginx使用自旋锁,同时需要进程快速使用共享内存,否则可能出现死锁或者性能下降的问题。
  • 一块共享内存可能是给许多对象共同使用的,使用Slab内存管理器;

Nginx容器:

  • 数组:多块连续内存
  • 链表
  • 队列 
  • 哈希表
  • 红黑树
  • 基数树

Nginx中的哈希表与普通的哈希表的区别:

        --应用场景:应用于静态不变的场景,没有插入和删除操作;

        --bucket_size(对齐问题)、max_size

Nginx中的红黑树:

        

        --红黑树是自平衡的二叉查找树,高度不会超过2log(n),增删改查的复杂度为O(log(n)),遍历复杂度O(n)。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值