设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

通过添加一些gems来提升Rails应用的性能

2014-7-4 11:26| 发布者: joejoe0332| 查看: 2939| 评论: 0|原作者: 0x0bject|来自: oschina

摘要: 使用Rails一段时间之后,你可能就会开始吹毛求疵的想要提高它性能。这是一系列文章中第一次考虑如何提高(即使微不足道的)Rails的性能。


oj gem

1# oj gem
2gem 'oj'
3gem 'oj_mimic_json' # we need this for Rails 4.1.x

这个测试用例非常简单,仅仅将所有的article序列化为JSON格式:

1class SidechannelsController < ApplicationController
2  def oj
3    render json: Article.all
4  end
5end

使用标准Rails序列化器:

1Running 10s test @ http://localhost:3000/sidechannels/bench
2  2 threads and 10 connections
3  Thread Stats   Avg      Stdev     Max   +/- Stdev
4    Latency   108.37ms    5.12ms 134.90ms   83.33%
5    Req/Sec    45.76      3.60    55.00     57.69%
6  922 requests in 10.00s, 57.41MB read
7Requests/sec:     92.17
8Transfer/sec:      5.74MB

使用oj gem:

1Running 10s test @ http://localhost:3000/sidechannels/bench
2  2 threads and 10 connections
3  Thread Stats   Avg      Stdev     Max   +/- Stdev
4    Latency    78.06ms    4.43ms  92.83ms   81.31%
5    Req/Sec    63.64      5.33    71.00     64.49%
6  1277 requests in 10.00s, 79.83MB read
7Requests/sec:    127.65
8Transfer/sec:      7.98MB


  使用jemalloc

  好吧,这其实不是一个真正的gem,如果你想深入探究它,可以看我的这篇文章。在初始测试时,jemalloc并没有产生太多性能的提升,至少对我使用的测试用例是这样的。

  提示:某些情况下,可能会默认包含在Ruby中。

  更新:请一定尝试一下kzk的jemalloc gem

1gem install jemalloc
2 
3je -v rails s

深入探究你的Rails应用

不要担心,去用一下Sam Saffron的带有非常棒的FlameGraphsMiniProfiler吧!


  结语

  于你的应用要做什么,你可能想为你的Gemfile添加上述的一些gem。通常我会把他们都添加上,当然是出于一个好的估量(你可能会想检查你的RAM利用率,然后在添加之前,进行一个完整的测试)。

oj gem基于JSON API,对Rails来说是非常不错的,使用oj gem,你可以删除视图并仅使用代言人或者你选择的模式进行序列化。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部