Ruby ngx_mruby Benchmark

taojay315 · 2016年03月18日 · 最后由 lgn21st 回复于 2016年03月18日 · 3448 次阅读

看来还是要简单说明一下,要不然我看所有人都要纠结到我的测试准不准上去了。

这个测试并不是要搞个大新闻,哇 ruby 新出了一个性能提升 10 倍,并不是这样,没有银弹。

mruby 跟 ruby 完全不是一回事,放在一起只是对照

mruby 跟 ruby 完全不是一回事,放在一起只是对照

mruby 跟 ruby 完全不是一回事,放在一起只是对照

测试肯定不准,sinatra 和 rack 配置一下性能会更好,nginx 配置一下性能也更好,不过可以参考官方 benchmark,不在一个数量级上是肯定的。这个结果只是为高并发的工具箱里加一个工具。

比如一个项目压力很大,但是可能只有那么一两个请求压力大,以前的解决方案可能是拆项目,换语言等方式解决。现在可以考虑把压力大但是不复杂的请求用 mruby 实现一下然后做个微服务出来。

mruby 跟 ruby 不是一回事不仅仅是运行方式不一致,支持也不一致,至少目前用 mruby 处理复杂业务是不太现实的。每次引入新的 gem 或者有其他底层修改都需要重新编译 nginx。

========================

用例:在 redis set 里面 spop 一条返回 json。

测试:ab -c100 -n15000 http://localhost:9292/

# sinatra

Requests per second:    1020.89 [#/sec] (mean)
Time per request:       97.953 [ms] (mean)

# Only rack

Requests per second:    1020.89 [#/sec] (mean)
Time per request:       97.953 [ms] (mean)

#  ngx_mruby

Requests per second:    14339.08 [#/sec] (mean)
Time per request:       6.974 [ms] (mean)
  1. 不准确,只有参照价值。

  2. mruby 跟 ruby 完全不是一回事,放在一起只是做个对照,mruby 现阶段的直面对手应该是 lua.

benchmark 原始出处呢?用的什么 ruby 服务器都没有说吗?这样一点信服力都没有

#1 楼 @nouse 自己测得啊,自己的笔记本啊,差了一个数量级的对照已经很明显了吧。

#2 楼 @taojay315 我简单告诉你为什么不可信

  1. 你用了 ab
  2. 你的测试机和服务器在一台机器上
  3. 你的并发量可能超出了服务器的并发能力,所以你得到的数据都是等待时间而不是响应时间,给你差了 10 倍的假象

#3 楼 @nouse ab 为啥不可信,其他都可以理解

#4 楼 @killyfreedom 不仅 ab 不可信,mac 也不可信,参考 Passenger 给出的 benchmark 指南。

https://www.phusionpassenger.com/library/config/apache/optimization/#benchmarking-recommendations

#3 楼 @nouse 。。你说的我都知道啊亲,我自己也说了结果不准。

但是问题是,我的目的并不是要得到一个准确的“这台机器能响应多少请求”上啊。

在其他变量都一致的情况下只有响应环境不一致,测试一下区别,这个才是我的目的啊。

所以 ab mac 都不可信但是性能差距很明显是事实啊亲。

#3 楼 @nouse #5 楼 @42thcoder

wrk 结果也有,结果一致就没发。

wrk --threads 8 --duration 5 http://localhost:9292

# ngx_mruby

Running 5s test @ http://localhost:9292
  8 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   436.26us    1.23ms  30.83ms   99.51%
    Req/Sec     2.72k   722.64     4.15k    72.73%
  110280 requests in 5.10s, 16.39MB read
Requests/sec:  21626.12
Transfer/sec:      3.21MB

# rack
Running 5s test @ http://localhost:9292
  8 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.75ms  671.42us  15.34ms   89.68%
    Req/Sec   268.22     23.30   373.00     93.60%
  10856 requests in 5.10s, 1.28MB read
Requests/sec:   2126.91
Transfer/sec:    257.35KB
9 楼 已删除

楼主有没有试过 ngx_lua vs. ngx_mruby?

在添加一个 FastHTTP

Web Framework Benchmarks 第十二轮 (Round 12) 最新出炉的冠军,可否一战?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号