Nginx的基础概念---tcp连接

nginx有一个最主要的工具,connection,它封装了对请求的各种处理方法。

为了更好地阅读本文,请先理解三个主要对象:connectionngx_connection_tsocket

我将三者关系类比三国志游戏的武将执行建筑任务。connection可以理解为君主ngx_connection_t可以理解为建筑队列socket可以理解为武将。一个建筑流程是,君主查看是否有空闲的建筑队列,有的话则安排一个武将去执行建筑任务。

 

ngixn无论是作为客户端还是服务端,在发起请求(客户端)或者接受请求(服务端)时,都会是一个ngx_connection_t 结构体和一个socket处理此次连接。

不同的是,作为客户端,nginx会先创建ngx_connection_t结构体,进而创建socket连接,发起请求......;(需要时才创建socket连接发起请求)

作为服务端,nginx会先创建socket连接,进而创建ngx_connection_t结构体,处理请求......; (只要启动服务就创建socket连接实时监控)

如图:

ngxin中,每个进程都会有最大连接上限。master进程有,worker进程也有,显然,前者的数量等于后者数量(个人认为作为服务端时这里要加1,因为始终要有一个主socket监听着该端口下是否有请求进来)之和。关于master和worker的关系, 请看上一篇
每个worker都有一个独立的连接池(worker_connections),里面保存的是一个ngx_connection_t数组,数组的长度即此worker可进行的最大连接数。每个连接池分为两块,一块是已占用的ngx_connection_t,一块是空闲的ngx_connection_t,由一个链表结构管理。需要时去表里取用空闲的ngx_connection_t,用完后将ngx_connection_t放回。

主要借鉴:https://www.w3cschool.cn/nginx/ycn81k97.html

参考资料:http://tengine.taobao.org/book/chapter_12.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值