回答
收藏
分享
举报
Epoll
提问于2020-08-23 22:33

浏览 1.1k

关于epoll,哪位大神能用言简意赅的方式来介绍一下呢,感觉这个内容是Nginx最后核心的一块技术原理,在网上也学习了一些内容,感觉还是有点没有吃透。


转赞一篇不错的好文”https://zhuanlan.zhihu.com/p/63179839

已修改于2023-03-03 00:16



写下您的回答
发表回答
全部回答(3)

按点赞数排序

按时间排序

简言之,就是内核将Socket缓冲区情况通知给用户态进程的接口。概括为以下4点:

1、TCP由内核实现的,epoll是内核提供给应用进程的接口;

2、当TCP连接需要发送数据时,Socket缓冲区上必须有空闲位置。内核接收到对方的ACK报文,才能释放掉发送报文(否则要反复重发),产生空闲位置。

3、当TCP连接需要接收数据时,必须是Socket缓冲区上已经有数据了,否则read函数就会阻塞。epoll_wait可以完成2、3两个步骤(包括三次握手)的通知。

4、当你就某个TCP连接需要接收内核通知时,通过epoll_ctl函数告诉内核即可。

赞同

6

回复举报

回答于2020-08-25 08:23



回复陶辉
回复
谢谢老师指导

0

回复举报

回答于2020-08-26 03:19



回复jiangyidigital
回复

nginxLinux平台默认是epoll事件模型,但是内核版本号要高于2.6.18才提供,现在的各大Linux发行版都满足了,如果不满足内核版本,默认的是select事件模型。

赞同

0

回复举报

回答于2020-09-08 18:10



回复守望
回复

好的问题,感谢陶老师的回答

赞同

0

回复举报

回答于2020-08-26 14:21



回复阿尔巴
回复
提问者
jiangyidigital
这家伙很懒还未留下介绍~
0
文章
1
问答
1
粉丝
相关问答

1、tcpdump的用法参见:https://time.geekbang.org/course/detail/175-118169

2、wireshark的用法参见:https://time.geekbang.org/course/detail/175-100973,https://time.geekbang.org/course/detail/175-100975,以及https://time.geekbang.org/course/detail/175-100976

点赞 0
浏览 1k

proxy_cache_valid用来匹配上游HTTP响应是否使用缓存的2个条件:

1、HTTP响应码,比如是否缓存404响应;

2、当上游响应中未携带cache-control、expires头部时,缓存将使用它后面的时间作为过期时间。

proxy_cache_path定义的淘汰时间,即到达后立刻删除,而过期时间只是资源过期,缓存不会立刻删除。 

点赞 0
浏览 1.3k

可以看一下proxy_pass的文档,反向代理的时候会把uri拼到后面去,可能是路径弄错了,需要用变量来拼一下转发的uri。

点赞 0
浏览 1.3k