文章插图
- EPOLLONESHOT设置
- 两种模式的选择
6.epoll的惊群问题在2.6.18内核中accept的惊群问题已经被解决了,但是在epoll中仍然存在惊群问题,表现起来就是当多个进程/线程调用epoll_wait时会阻塞等待,当内核触发可读写事件,所有进程/线程都会进行响应,但是实际上只有一个进程/线程真实处理这些事件 。
在epoll官方没有正式修复这个问题之前,Nginx作为知名使用者采用全局锁来限制每次可监听fd的进程数量,每次只有1个可监听的进程,后来在Linux 3.9内核中增加了SO_REUSEPORT选项实现了内核级的负载均衡,Nginx1.9.1版本支持了reuseport这个新特性,从而解决惊群问题 。
EPOLLEXCLUSIVE是在2016年Linux 4.5内核新添加的一个 epoll 的标识,Ngnix 在 1.11.3 之后添加了NGX_EXCLUSIVE_EVENT选项对该特性进行支持 。EPOLLEXCLUSIVE标识会保证一个事件发生时候只有一个线程会被唤醒,以避免多侦听下的惊群问题 。
推荐阅读
- 看都不懂的三层架构,到底要怎么理解?
- 谈谈Linux网络协议以及网络栈结构
- 共识算法Raft为什么这么流行,及原理解析
- Windows和Linux通吃,最新远控木马“Dacls”来袭
- 细品Linux系统中文件的三个时间属性
- 活死人意思 活死人的理解
- 开源交换机操作系统
- 如何在 Ubuntu 和其它 Linux 发行版上更新 grub
- Linux发行版之一CentOS的安装与网卡配置
- Linux系统管理命令:openssl