美文网首页
惊群效应

惊群效应

作者: tingjieee_19e5 | 来源:发表于2018-05-06 22:10 被阅读0次

1. Linux惊群效应

多线程或多进程在同时阻塞等待一个事件而处于休眠态时,如果等待的事件发生,则去唤醒了所有的进程或者线程,但最终只有一个进程或线程可以获取资源,而其他进、线程又重新进入休眠状态,这种现象和浪费性能就叫惊群。

2. 惊群效应浪费的资源

  • 无效的context switch,无效的调度造成系统性能降低,造成诸如cache整体失效等
  • 为了确保一个进、线程得到资源,用户需要对获取资源操作进行加锁保护,进一步加大了系统开销

3.惊群的解决办法

应该分情况讨论:

  • 对于线程池,signal_cond_wait造成的线程休眠,如果现实需求不需要唤醒所有线程,则可以使用noticy_once()来唤醒一个线程。
  • 如果是epoll函数调用的惊群问题,则可以参考Nginx的解决方法,在多个进程将listenfd加入到epoll之前,先获取全局互斥锁,获取锁的才可以将listenfd加入到epoll中,当网络连接事件到来时,只有epoll中含有listenfd的线程才会被唤醒。如此来解决epoll调用中的惊群问题。
// demo
epollfd = epoll_create(FDSIZE);
pthread_mutex_lock(&globalLock);
add_event(epollfd,listenfd,EPOLLIN); 
pthread_mutex_unlock(&globalLock);
for(;;){
    ret = epoll_wait(epollfd,events,EPOLLEVENTS,-1);
    handle_events(epolfd,events,ret,listenfd,buf);
}

相关文章

  • nginx如何解决惊群效应

    本文主要内容包括惊群效应简介、nginx如何解决惊群和一个仿照nginx避免惊群效应的简单例子 惊群效应 惊群简单...

  • 惊群效应(转载)

    目录 高并发中的惊群效应 1.惊群效应简介 操作系统的惊群 惊群的坏处 3.1 坏处 3.2 其他 4 惊群的几种...

  • 惊群效应

    1. Linux惊群效应 多线程或多进程在同时阻塞等待一个事件而处于休眠态时,如果等待的事件发生,则去唤醒了所有的...

  • 网络编程"惊群"问题

    1、惊群效应(thundering herd) 什么是惊群效应惊群现象就是多进程(多线程)在同时阻塞等待同一个事件...

  • 关于惊群效应

    什么是惊群,这篇文章写的很好:举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所...

  • 惊群效应理解

    惊群: 多个进程或者线程阻塞等待同一个事件,当事件到来,多线程或者多进程同时被唤醒,只有一个线程或进程获得资源。 ...

  • nginx的惊群效应

    什么是惊群效应:惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠...

  • 关于accept mutex获取的方式

    问题背景 在多进程accept的时候,为了避免惊群效应浪费资源,nginx加了一个accept mutex,但是获...

  • 群效应

    坚持了半个月5点半左右起床,阅读、日更、亲子英语10页的背诵、每日运动半个小时,这些任务也坚持半个月基本每天都完成...

  • Linux惊群效应之Nginx解决方案

    前言 因为项目涉及到Nginx一些公共模块的使用,而且也想对惊群效应有个深入的了解,在整理了网上资料以及实践后,记...

网友评论

      本文标题:惊群效应

      本文链接:https://www.haomeiwen.com/subject/uhqprftx.html