【发布时间】:2014-08-14 07:21:03
【问题描述】:
作为一名 ruby 专家,我决定采用 erlang 以获得高性能、可靠的后端。 设置非常简单:获取 post 请求,向 redis 写入内容,返回统计信息。所有的json。这也是我如此关心每秒请求数的原因。
选择的工具:webmachine,jiffy 用于 json 编码/解码,poolboy 用于连接池,eredis 用于 redis 通信。
使用的机器:macbook pro,i5 2.4Ghz,8GB 内存。
我的 erlang 每秒大约有 5000 个请求,而 jruby/torqbox 大约有 12,0000 个。 (look here for a complete ruby performance test setup)
我意识到我可以在 erlang 中使用 ets 来节省时间,并将 redis 留作“后台处理”在响应之后编写,但这不会产生什么影响。甚至对 'hello world' erlang 腿后面的简单测试。
有什么建议吗?我做错了吗?
【问题讨论】:
-
你在使用 jruby 什么?请注意,webmachine不是一个网络服务器。它更接近网络库/框架。如果您仅使用带有 jruby 的 Web 服务器(或直接的机架应用程序),那么您应该考虑直接使用 Cowboy 进行更多的苹果与苹果比较。作为参考,我在旧的 Macbook Pro 上使用 Cowboy 获得大约 11000 req/s。
-
这里是另一个你可以参考的基准(也许尝试用 jruby 运行它们?):github.com/mroth/phoenix-showdown
-
作为比较,您可以查看这些基准测试的结果和源代码:techempower.com/benchmarks
-
你为什么用 Elixir 标记这个?你使用的是 Elixir 代码还是 Erlang 代码?就人们给出的答案而言,这可能会有所不同。
标签: performance erlang elixir webmachine requests-per-second