JRuby 为什么 JRuby + TorqueBox 相比 Ruby + Passenger 没有显著的提升?

ltl3884 · 2015年10月19日 · 最后由 ltl3884 回复于 2015年10月27日 · 8366 次阅读

2 台 8 核 16G 内存的机器 A 和 B 分别部署 test 项目

test 项目为 rails4.1,有一个 controller 返回 json 数据

class TestController < ApplicationController
    def index
        render :json => ["abc"]
    end
end
  • 机器 A

    • ruby 2.1.5
    • passenger 4.0.58
    • nginx 1.6.2
  • 机器 B

    • jruby .1.7.19
    • torquebox 3.1.2

机器 A

passenger_min_instances 200;

并发 200 访问

siege -c200 http://localhost/test/index

-------------------------------分割线--------------------------------------------

机器 B

torquebox run --max-threads=200;

并发 200 访问

siege -c200 http://localhost:8080/test/index

@robbin @doitian @huacnlee @rei @flyerhzm

如果只看响应时间,你的 200 并发显然没有达到服务器的上限。

第二,如果只是测试 JSON 返回,JRuby 和 MRI 相比没有任何优势,因为这两种的 JSON 库都做了相当多的优化。如果用了 Oj,可能 MRI 优势更明显。

建议搜索一下 Gil Tene Latency , 比如 https://latencytipoftheday.blogspot.com/ ,这样你可以知道应该如何做 Benchmark。

楼主可以试试 jruby 9030, 提升了 postfix rescue 的性能和 JIT 的准确率

http://blog.jruby.org/2015/10/performance_improvements_in_jruby_9030/

应该拿 jruby 9030 和 torqbox 4 在测试一把。

throughput 呢?CPU 压力呢?内存占用呢?你这个 response time 说明不了任何意义。在没有达到性能极限之前,无论你怎么压,response time 估计都是 3ms 多。

#5 楼 @robbin 能否给一个正确的测试 ruby 和 jruby 性能的方式?比如说 cpu 要用到多少?内存要用到多少?

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