Nginx 源码调试记录

本文记录了Nginx源码调试过程,探讨了为何在测试时post机制未被触发,以及如何通过修改源码来区分处理不同post队列的事件。内容涉及post队列与accept_mutex的关系,以及在处理连接时如何识别当前执行的post队列。
摘要由CSDN通过智能技术生成

Nginx 源码调试记录

虽然Nginx在事件到来时有post机制来讲事件分别处理,但是在测试的时候,并没有触发post机制,所有事件都是立即处理的。后续研究什么情况下会触发post队列机制。

post队列机制与accept_mutex 有关,只有当nginx配置文件中打开accept_mutex配置项才能实现负载均衡以及惊群问题解决等问题。而accept_mutex(nginx1.18.0)在实际测试中默认是关闭的,所以出现了以上不孬触发post,所有连接事件都是立即处理的问题,开启accept_mutex之后,进程会尝试获取acept锁,并且会将事件添加到post队列,等待后续处理。

修改post相关函数,实现在处理连接时 区分 当前执行的是哪个post队列。

背景:Nginx事件处理中,只要使用了post队列机制,那么事件都会延后处理,并且在处理过程中,处理完accept_events之后便会释放accept_mutex锁,然后再处理已有连接的读写事件以及定时器事件等。但是**两个post队列是使用的同一个处理函数进行的调用,因此想在该函数中区分当前处理的是哪个队列的事件,需要修改源码的三个位置,分别是函数声明、定义和调用出的代码。
修改代码:

  1. 修改声明:在nginx/src/event/ngx_event_posted.h中进行修改:
void n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值