- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
许多 linux/unix 编程书籍和教程都谈到了 "Thundering Herd Problem"当在等待监听套接字的可读性的 select() 调用上阻塞了多个线程或 fork 时,就会发生这种情况。当连接进入时,所有线程和 fork 都被唤醒,但只有一个“获胜”并成功调用“accept()”。与此同时,大量的 cpu 时间被无缘无故地唤醒了所有的线程/ fork 。
我注意到 project它为 linux 内核中的这个问题提供了一个“修复”,但这是一个非常古老的补丁。
我认为有两种变体;一种是每个 fork 执行 select() 然后 accept(),另一种是只执行 accept()。
现代 unix/linux 内核在这两种情况下是否仍然存在 Thundering Herd Problem 或只有“select() then accept()”版本?
最佳答案
多年来,大多数 unix/linux 内核将响应序列化到 accept(2),换句话说,如果多个线程在 accept(2) 上阻塞单个打开的文件描述符,则只有一个线程被唤醒。
OTOH,正如您所描述的,许多(如果不是全部)内核在选择接受模式中仍然存在雷鸣般的羊群问题。
我写了一个简单的脚本(https://gist.github.com/kazuho/10436253)来验证问题的存在,发现问题存在于linux 2.6.32和Darwin 12.5.0(OS X 10.8.5)上。
关于linux - Linux 上是否还存在 Thundering Herd 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2213779/
这篇冗长、详细、有趣的文章描述了 --thunder-lock 的历史和设计:http://uwsgi-docs.readthedocs.org/en/latest/articles/Serializ
本文整理了Java中com.nepxion.thunder.registry.zookeeper.ZookeeperRegistryExecutor类的一些代码示例,展示了ZookeeperRegis
“雷霆万钧”问题发生在高度并发的环境中(通常是很多用户)。当多个用户同时请求同一条数据,出现缓存未命中(缓存元素的数据不在缓存中)时,就会触发雷群问题。 我找不到 ehcache-spring-ann
许多 linux/unix 编程书籍和教程都谈到了 "Thundering Herd Problem"当在等待监听套接字的可读性的 select() 调用上阻塞了多个线程或 fork 时,就会发生这种
本文整理了Java中com.nepxion.thunder.registry.zookeeper.ZookeeperRegistryExecutor.()方法的一些代码示例,展示了ZookeeperR
我最近购买了 Dream Cheeky Thunder 导弹发射器,我希望通过我的树莓派来控制它。 使用来自报复的代码(https://raw.githubusercontent.com/codeda
我有一个非常昂贵的查询结果。它是几个表的连接和一个 map reduce 作业。 这在 memcached 中缓存了 15 分钟。一旦缓存过期,显然会运行查询并再次预热缓存。 但在到期时 thunde
我是一名优秀的程序员,十分优秀!