Erlang 中的接受器池和负载平衡?

2024-05-19

From http://www.erlang.org/doc/man/gen_tcp.html#accept-1 http://www.erlang.org/doc/man/gen_tcp.html#accept-1:

值得注意的是,accept 调用不必发出 来自套接字所有者进程。使用 5.5.3 及更高版本 模拟器,可以同时发出多个接受调用 不同的进程,允许一组接受进程 处理传入连接。

(Q1)这是否意味着我们可以拥有Unicorn http://unicorn.bogomips.org/Erlang 风格的负载平衡?

(Q2)如果是这样,是否有任何现有的服务器或库使用此功能?

(Q3)Unicorn 的工作原理是假设请求处理是fast。同样的假设下,Erlang 中将acceptors 和workers 结合起来是否有可能获得更好的性能?

对于那些不熟悉 Unicorn 的人来说,它是一个传统的 UNIX prefork Web 服务器。工作进程之间的负载平衡由操作系统内核完成。所有工作人员共享一组通用的侦听器套接字,并对它们执行非阻塞的accept()。内核将决定向哪个工作进程提供套接字,如果没有任何内容可以接受(),工作进程将休眠。对于单个监听器套接字,我相信当工作进程阻塞accept()并且操作系统内核决定“竞赛”的结果时,情况是一样的。


我还在 Erlang Questions 邮件列表中发布了这个问题。 正如所指出的丹尼尔·戈岑, Erlang中有接受器池库,例如ranch https://github.com/extend/ranch and swarm https://github.com/jeremey/swarm.

  • ranch与 Unicorn 的工作方式不同,它只在许多进程中“接受”,然后将套接字传递给某个工作进程。

  • The way swarm其工作方式与 Unicorn 相同,即 接受者和工作者结合在一起。 (谢谢卢伊克·霍金用于指出) 但它们有点不同,因为 swarm 可以接受新的套接字 与接受套接字的处理并行,而 Unicorn 仅在处理已接受的套接字后才接受

我更喜欢群体风格,因为它对于快速和慢速都是理想的 请求,而 Unicorn 需要快速请求。

独角兽并没有尝试高效地服务速度慢的客户,而是 依靠缓冲反向代理来有效地处理缓慢的情况 客户。

unicorn 并不适合所有应用程序。独角兽优化用于 CPU/内存/磁盘密集型且花费很少时间的应用程序 等待外部资源(例如数据库服务器或外部资源) 应用程序编程接口)。

unicorn 对于 Comet/reverse-HTTP/push 应用程序来说效率非常低 HTTP 连接花费大量时间处于空闲状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Erlang 中的接受器池和负载平衡? 的相关文章

  • Erlang:有“epmd”的 API 吗?

    有没有办法查询 epmd 守护进程管理的名称表 The nodes 函数在这方面不是很有帮助 注意 我正在寻找 APIaside解析通过 stdout 生成的输出 要查询 epmd 可见的节点 请调用 EpmdModule net kern
  • 使用 chrome 和 selenium 进行网络节流

    谷歌Chrome 38推出新功能 设备模式和移动仿真 https developer chrome com devtools docs device mode开发工具中的功能 除了选择仿真设备外 还可以模拟不同的网络条件 https dev
  • 为什么我的 Maven 在 Ubuntu 上这么慢?

    我在 Ubuntu 服务器上有 Maven 它似乎尝试了很多很多的地方来下载 但是下载超时了 但是超时需要很长时间 所以我的整个构建花了一个多小时 Downloading http scala tools org repo releases
  • CSS动画比JS动画快吗?

    前段时间读到一篇文章说CSS动画比JS动画快 使用 jQuery 做了一些动画后 我可以理解为什么有些人会这么说 因为 jQuery 动画有时会出现错误并且速度很慢 但我想知道的是 这个论点是否有任何核心事实 有一种常见的误解 认为 CSS
  • 是否有更快的方法来检查 LINQ to XML 中的 XML 元素并解析 bool?

    仅供参考 这与我的上一个问题非常相似 是否有更快的方法来检查 LINQ to XML 中的 XML 元素 https stackoverflow com questions 2065665 is there a faster way to
  • 与更具可读性的方法相比,C++ 中按位异或的效率

    我最近正在为我正在进行的一个研究项目编写一些代码 其中效率非常重要 我一直在考虑放弃一些常用的方法并使用按位异或来代替 我想知道这是否会产生差异 如果我执行此操作说数百万次 或者在我在 g 中使用 03 后是否相同 我想到的两个例子 我有一
  • 真实文件对象比 StringIO 和 cStringIO 慢?

    StringIO其代码中有以下注释 Notes Using a real file is often faster but less convenient There s also a much faster implementation
  • memmove和memcpy在什么平台上可以有显着的性能差异?

    我明白那个memmove and memcpy区别在于memmove处理内存重叠情况 我检查了 libgcc 中的实现并得到了这篇文章 memcpy性能 http software intel com en us articles memc
  • 性能 - String.charAt(0) 与 /^.{1}/

    从概念上讲哪个应该更快 String charAt 0 or 1 regex String charAt 0 必须处理和应用正则表达式 速度测试资源 Paul S https stackoverflow com users 1615483
  • 在循环内部或外部声明本地更好吗? [复制]

    这个问题在这里已经有答案了 我习惯这样做 do local a for i 1 1000000 do a
  • RMI 有多快?

    我看到过这样的问题 两个独立的 Java 桌面应用程序之间的通信 https stackoverflow com questions 1680898 communication between two separate java deskt
  • 如何加快编辑距离计算速度

    我正在尝试运行模拟来测试平均值编辑距离 http en wikipedia org wiki Levenshtein distance之间随机 二进制字符串 我的程序是用 python 编写的 但我正在使用这个C扩展 https githu
  • 为什么在我的例子中 For 循环比 Map、Reduce 和 List 理解更快

    我编写了一个简单的脚本来测试速度 这就是我发现的结果 实际上 for 循环在我的例子中是最快的 这真的让我感到惊讶 请查看下面 正在计算平方和 这是因为它在内存中保存列表还是有意为之 谁能解释一下这一点 from functools imp
  • 通过 https 负载均衡器的 WCF http 服务

    我有一个可以通过 http 端点访问的 WCF Web 服务 现在 该服务应通过 https 与负载均衡器一起发布 客户端是通过 svcutil exe 在 Net 中创建的 但 Java 客户端也需要 WSDL 我的理解是 Web 服务在
  • 去除字符串的最佳方法是什么?

    我需要具有最佳性能的想法来删除 过滤字符串 I have string Input view 512 3 159 删除 view 和 的最佳性能方法是什么 和引号 我可以做这个 Input Input Replace view Replac
  • IEnumerable 作为 DataTable 性能问题

    我有以下扩展 它生成一个DataTable从一个IEnumerable public static DataTable AsDataTable
  • 对于双核手机,availableProcessors() 返回 1

    我最近购买了一部 Moto Atrix 2 手机 当我尝试查看手机中的处理器规格时 Runtime getRuntime availableProcessors 返回 1 proc cpuinfo 也仅包含有关处理器 0 的信息 出于好奇
  • Java ByteBuffer 性能问题

    在处理多个千兆字节文件时 我注意到一些奇怪的事情 似乎使用文件通道从文件读取到使用 allocateDirect 分配的重用 ByteBuffer 对象比从 MappedByteBuffer 读取要慢得多 事实上它甚至比读取到字节还要慢使用
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • fetchsize和batchsize对Spark的影响

    我想通过以下方式控制 RDB 的读写速度Spark直接 但标题已经透露的相关参数似乎不起作用 我可以得出这样的结论吗fetchsize and batchsize我的测试方法不起作用 或者它们确实会影响阅读和写作方面 因为测量结果基于规模是

随机推荐

  • “引起:java.lang.RuntimeException:视图必须有标签”的实际含义是什么?

    如果知道想要什么标签 请告诉我 Caused by java lang RuntimeException view must have a tag BaseActivity java Override public void setCont
  • 如何像在 localStorage 中一样从 localForage 分配变量?

    请帮我解决以下问题 我一直在将我的 AngularJS 应用程序从 localStorage 转换为 localForage 在我的应用程序中 我像这样分配 localStorage 值 window localStorage setIte
  • 在 Java 中验证 HMAC SHA1 签名

    我想知道如何验证我创建的签名 我创建签名的代码与此类似 HMAC SHA1 如何在 Java 中正确执行此操作 https stackoverflow com questions 6312544 hmac sha1 how to do it
  • highcharts 可点击标签如何转到锚点

    我在 Backbone 应用程序中使用 Highcharts 在柱形图中显示一些信息 我使用图表中的数据标签来允许用户单击并移动到该数据点的详细信息页面 这不是正常的 window location 调用 而应该是 window locat
  • 使用 ifstream 在大文件中查找

    我正在使用 ifstream 在 C 中实现一个程序 该程序必须在大文件 1TB 中查找 然而 读取2GB后就失败了 有没有办法获取文件位置 即使是大文件 我为 32 位 Windows 机器进行编译 std ifstream f f op
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • 如何检查 BOOL 是否为空?

    有没有办法在将值分配给 BOOL 之前检查该值是否为 NULL Nil 例如 我在 NSDictionary 中有一个值可以是 TRUE FALSE NULL mySTUser current user following results
  • 比较 rspec 自定义 ActiveRecord::RecordInvalid 错误消息

    模型中有以下内容 validates uniqueness of title if proc item item item type tag case sensitive false message I18n t errors key va
  • 可以有一个带有可变列的表吗?

    这可能是一个愚蠢的问题 但这里是 是否可以创建一个能够包含具有可变列数和自定义列名称的行的动态表 我浏览过 EAV 建模 但看起来很沉重 现实生活中的例子可能是这样的 假设我有一个客户登记册 但每个客户可能需要输入不同的信息 根据您要输入的
  • 无法解决dll之间的冲突

    我在构建中收到类似于以下内容的警告墙 No way to resolve conflict between Newtonsoft Json Version 7 0 0 0 and Newtonsoft Json Version 6 0 0
  • 将下一个参数作为 String.Format 中的字段宽度

    在 C 中 我有一个想要用于某些字符串的宽度 但直到运行时我才知道该宽度 我正在做这样的事情 string Format 0 digits value prints 123 as 123 是否有一个字符串格式化指令可以让我指定它 而无需像这
  • Powershell v2 远程处理和委派

    我在两台机器上安装了 Powershell V2 并在两台机器上运行 Enable PsRemoting 两台机器都是Win 2003 R2 并且都加入了同一个活动目录域 我可以成功地远程运行命令 所以PS远程处理是在本地服务器和远程服务器
  • 是否可以设置输入文本值的样式?

    我想知道是否可以设置输入框值的样式 such http jsfiddle net aCwhY as
  • 运行maven编译两次

    我正在将 ant 项目迁移到 Maven 这个项目非常不寻常 它使用两个编译步骤和这些编译步骤之间的代码生成步骤 整个构建过程可以描述如下 编译 src 目录中的所有内容 运行内部java工具 将java指向已编译的类和用于编译这些类的ja
  • MVCC 如何与 MySql 中的 Lock 配合使用?

    我知道Mysql中使用锁或者MVCC可以实现并发控制 比如可重复读 但我不知道MVCC如何避免幻读 在其他地方了解到一般是通过MVCC和Gap Lock来实现的 但是目前我理解的是MVCC不需要锁 即更新和删除都是使用undo log来实现
  • 每个新的 COM 类都必须重新实现 IUnknown 接口吗?

    抱歉 如果这个问题对每个人来说都是显而易见的 但我对 COM 很陌生 从教程中我看到这里http www codeguru com cpp com tech activex tutorials article php c5567 http
  • 在午夜更新应用程序徽章,并提供以下选项:应用程序未启动或在后台,徽章数量可能会减少

    我正在阅读许多有关本地通知的内容以及它们如何帮助更新应用程序徽章编号 我想在午夜更新此徽章 并将其值设置为我在午夜之前无法知道的数字 因此 如果可能的话 我想在午夜启动一个功能来更新 加载一些数据 检查要显示的数字 并将其显示在徽章上 当然
  • 尝试抓住最后的问题

    在 Try Catch Final 块中 无论发生什么情况 finally 块总是执行 还是仅当 catch 块不返回错误时才执行 我的印象是 只有当 catch 块没有错误地通过时 finally 块才会执行 如果 catch 块因错误而
  • 有谁知道变量必须在函数顶部定义的原因

    I have a question does anyone know why the variables have to be defined initialized at the beginning of a function Why c
  • Erlang 中的接受器池和负载平衡?

    From http www erlang org doc man gen tcp html accept 1 http www erlang org doc man gen tcp html accept 1 值得注意的是 accept 调