浏览 1.1k
关于epoll,哪位大神能用言简意赅的方式来介绍一下呢,感觉这个内容是Nginx最后核心的一块技术原理,在网上也学习了一些内容,感觉还是有点没有吃透。
转赞一篇不错的好文”https://zhuanlan.zhihu.com/p/63179839“
按点赞数排序
按时间排序
简言之,就是内核将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-09-08 18:10
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
proxy_cache_valid用来匹配上游HTTP响应是否使用缓存的2个条件:
1、HTTP响应码,比如是否缓存404响应;
2、当上游响应中未携带cache-control、expires头部时,缓存将使用它后面的时间作为过期时间。
proxy_cache_path定义的淘汰时间,即到达后立刻删除,而过期时间只是资源过期,缓存不会立刻删除。