y123456yz / reading-code-of-nginx-1.9.2

nginx-1.9.2源码通读分析注释,带详尽函数中文分析注释以及相关函数流程调用注释,最全面的nginx源码阅读分析中文注释,更新完毕

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

注释中的一些笔误??

zp7541 opened this issue · comments

ngx_event.c
if(ngx_event_flags&NGX_USE_FD_EVENT), 这里应该是使用POLL事件驱动, 作者注释成了使用EPOLL驱动。在ngx_poll_module.c中有这么一句话ngx_event_flags = NGX_USE_LEVEL_EVENT|NGX_USE_FD_EVENT;

ngx_connection.c文件中 开头对于nginx的惊群描述有点问题?
作者的注释内容:
搜狗截图20210728204407
我对nginx的惊群理解,nginx处理惊群应该有两种方式的惊群处理。
第一种:当系统不支持NGX_HAVE_REUSEPORT的时候,应该是主进程创建一个监听套接字,然后四个worker进程通过竞争锁的方式,即哪个进程获得了锁,就把监听套接字放入到本进程的epoll_fd中从而达到解决惊群的处理。
第二种:当系统支持NGX_HAVE_REUSEPORT的时候,这个时候主进程创建4个监听套接字,每个套接字对应一个进程,实现多个进程对多个监听套接字的处理,从而避免惊群。详细的解释可以看这篇文章https://new.qq.com/omn/20210708/20210708A026ED00.html

大家可以分析下一下代码片段
1.ngx_clone_listening
搜狗截图20210728210123
当系统不支持支持NGX_HAVE_REUSEPORT的时候,ngx_clone_listening函数直接返回NGX_OK
2.ngx_disable_accept_events
搜狗截图20210728210358
英文注释应该是nginx官方注释。说的应该是如果系统支持REUSEPORT,那么在disable_accept_event也就是删除epoll_fd的监听套接字的时候别删除本进程对应的套接字。应该是每个worker进程的epoll_fd上始终会有一个监听套接字,代码的写法应该是为了兼容监听多个端口,才有for循环的处理。
不知道我说的对不对,如果说错了还请指正。