首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang (或elixir)性能(每秒请求数)比jruby慢吗?

Erlang (或elixir)性能(每秒请求数)比jruby慢吗?
EN

Stack Overflow用户
提问于 2014-08-14 15:21:04
回答 3查看 10.6K关注 0票数 18

作为一名rubyist开发者,我决定使用erlang来获得高性能、可靠的后端。设置非常简单:获取post请求,将内容写入redis,返回统计数据。都是json。这也是我如此关心每秒请求数的原因。

可选工具:webmachine、用于json编码/解码的jiffy、用于连接池的poolboy和用于redis通信的eredis

使用的机器: macbook pro,i5 2.4 8GB,8 8GB内存。

我的erlang每秒收到大约5000个请求,而jruby/torqbox得到大约12,0000个请求。(look here for a complete ruby performance test setup)

我意识到我可以使用erlang中的ets来节省时间,并将redis留给“后台处理”在响应之后编写,但这不会有什么影响。甚至是一个简单的“hello world”测试,erlang的腿就在后面。

有什么建议吗?我做错了吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-14 17:40:25

  • Webmachine -我不知道。它对我的口味来说是相当重的,我不会用它。
  • jiffy-不错的选择。速度非常快,我经常使用它。
  • poolboy-我没有听说过它,我在Erlang有几年了。我肯定会在任何我期望高性能的地方使用cowboy,或者在更坚如磐石但仍然表现良好的情况下使用yaws。因为你的基准测试是牛仔正确的选择,它是顶级的performance-wise.
  • eredis --我不知道它有多成熟,它的效率如何。ets更适合基准测试。对于你的macbook测试,这并不重要,但是对于大的服务器(几十个CPU),我会检查它是否是瓶颈和分区表。
  • 最重要的是检查你的虚拟机参数。至少对于这种加载,你应该有+K true +A 100

与我的经验相比,你在Erlang上的结果似乎太低了。你应该变得更大十倍。你的有效负载生成工具也可能有问题。

最重要的是,这不仅可以被认为是Erlang世界的微型基准,也可以是nano或atto基准。当你尝试更困难和更复杂的事情时,真正的力量就会显现出来。其中并发请求应该以非常复杂的方式相互影响,您必须处理最终的一致性,并且实现它的可扩展性更高,并且需要使用异步进程间通信。

票数 19
EN

Stack Overflow用户

发布于 2014-09-02 11:01:48

我的两分钱。你弄错地方了。您正在测试一个针对JVM进行了优化的问题,该问题是在JVM进行了优化的机器上运行的。

你真的不会看到Erlang/OTP在mac book pro上可用的内核数量上的优势。这只是我的粗略猜测,但如果看到Erlang在少于8核的服务器上击败JVM,我会感到惊讶。为了在当前硬件上尽可能快地实现JVM,已经投入了大量的人力/时间。

编写线程安全的I/O代码相当简单,真正的问题出现在处理数十到数百个线程之间的内存访问时。

用Erlang/Elixir编写的目标是当前16或32核的高端服务器,在不久的将来有可能扩展到更高的规模。

票数 7
EN

Stack Overflow用户

发布于 2014-08-23 08:02:59

仅供参考:"+A 100“对联网没有帮助,它只适用于文件IO。如果你真的想要快速的web服务器,看看github.com/knutin/elli,它会在硬件上给你80kprs,而牛仔会给你30krps。另一方面,许多人指责elli没有遵循OTP原则。

如果你可以放置一些负载均衡器来清理请求,jiffy是一个很好的选择,因为jiffy会在你的代码中引入段错误--看看问题列表。

无论如何,如果您需要的是非常快的获取->解码、json、->存储、->回复工作负载,那么erlang可能不是您想要的东西。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25302247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档