看来还是要简单说明一下,要不然我看所有人都要纠结到我的测试准不准上去了。
这个测试并不是要搞个大新闻,哇 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)
不准确,只有参照价值。
mruby 跟 ruby 完全不是一回事,放在一起只是做个对照,mruby 现阶段的直面对手应该是 lua.