oro*_*emo 17 erlang performance elixir requests-per-second webmachine
作为一个rubyist,我决定采用erlang来获得高性能,可靠的后端.设置非常简单:获取发布请求,将内容写入redis,返回统计信息.所有的json.这也是为什么我非常关心每秒的请求.
选择的工具:webmachine,瞬间对JSON编码/解码,poolboy用于连接池,并且eredis为redis的通信.
机器使用:macbook pro,i5 2.4Ghz,8GB内存.
我的erlang每秒大约有5000个请求,jruby/torqbox大约有12,0000个.(在这里查看完整的ruby性能测试设置)
我意识到我可以在erlang中使用ets来节省时间,并且在响应之后留下用于"后台处理"的redis,但这将没有什么影响.甚至是对'你好世界'背后的二郎腿的简单测试.
有什么建议?我做错了吗?
Hyn*_*dil 18
+K true +A 100这种负荷.与我的经验相比,你对Erlang的结果似乎太低了.你应该得到几乎十倍的大.您的有效负载生成工具也可能存在问题.
而且最重要的是,这不仅可以被认为是Erlang世界的微观基准,也可能是纳米或atto基准.真正的力量将揭示你何时会尝试更艰难和更复杂的事情.并发请求应该以非常复杂的方式相互影响并且您必须处理最终的一致性并且实现它更具可伸缩性并且需要使用异步进程间通信.
我的2美分.你有错误的结局.您正在测试JVM针对JVM优化的某种机器进行优化的问题.
你真的不会看到Erlang/OTP对mac book pro上可用内核数量的优势.这只是我的粗略猜测,但我会惊讶地看到Erlang在不到8核心服务器上击败了JVM.在当前硬件上尽可能快地制作JVM需要大量的人/小时.
编写线程安全的I/O代码相当简单,当您处理数十到数百个线程中的内存访问时,会出现真正的问题.
在Erlang/Elixir中编写的目标是当前16或32核的高端服务器,并且在不久的将来可能会扩展得更高.
小智 5
仅供参考:"+ A 100"对网络没有帮助,只适用于文件IO.如果你真的想要快速的网络服务器,请看看github.com/knutin/elli,它将为你提供80 kprs的硬件,牛仔将给你30 krps.另一方面,elli是许多人因不遵守OTP原则而责备的事情.
如果您可以放置一些负载均衡器来清理请求,那么jiffy是一个不错的选择,因为jiffy会在您的代码中引入段错误 - 请查看问题列表.
无论如何,如果你需要的只是快速的GET - >解码json - > store - > REPLY工作负载,那么你不想选择erlang.
| 归档时间: |
|
| 查看次数: |
9764 次 |
| 最近记录: |