worker进程协同工作的关键:共享内存

共享内存:跨worker进程通讯

    打开了一块内存,多个worker进程可以同时访问,包括读取和写入。

 

问题:

  1.锁。多个worker进程同时操作一块内存,就会出现竞争关系

nginx中的锁都是自选锁,而不是基于信号量

自选锁:当这块内存被worker1所使用时,worker2需要获取锁的时候,只要worker1没有释放锁,worker2会一直不停的请求这把锁。 使用自选锁要求所有的nginx模块必须快速使用共享内存,快速使用,快速释放

早期基于信号量的nginx锁:当worker1拿到这把锁时,worker2需要时,发现锁已经被拿走了,会就地休息,等待worker1释放锁

 2.slab内存管理器(在Tengine中的slab_stat)

    slot是一个内存块,大小是两倍上涨的,2字节,4字节,8字节.....

   最多两倍内存消耗。适合小对象。避免碎片。避免重复使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值