惊群效应及其解决方法

惊群效应是指多个进程或线程等待同一事件时,事件触发唤醒所有进程,但只有一个能处理,造成资源浪费。其危害在于增加了系统无效调度的开销。解决方法包括在accept前加锁避免锁竞争,以及使用SO_REUSEPORT让内核决定新连接分配给哪个进程。
摘要由CSDN通过智能技术生成

惊群效应的概念

惊群现象就是多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只可能有一个进程(线程)获得这个事件的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群。

惊群效应的危害:系统对用户进程/线程频繁地做无效的调度,加大了系统开销。

惊群效应的解决方法

在accept之前加锁

lock;
accept();
unlock;

SO_REUSEPORT

在使用SO_REUSEPORT后,多个进程的套接字可以同时监听同一个IP:端口,然后由内核决定将新连接发送给哪个进程,显然会降低每个进程接收新链接时锁竞争:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值