ruby作为服务器端应用已经成熟了 -欧洲杯足彩官网

`
robbin
  • 浏览: 4793708 次
  • 性别:
  • 来自: 上海
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 博客专栏
    robbin谈管理
    浏览量:135363
    社区版块
    • ( 265)
    • ( 6203)
    • ( 75)
    存档分类
    最新评论

    ruby作为服务器端应用已经成熟了

      博客分类:
    • ruby
    javaeye网站在过去的ruby on rails实践当中,曾经被ruby的内存泄露问题深深的困扰过,并且自己编写了监控ruby进程泄露的监控脚本来解决这个问题。造成ruby内存管理不善的原因主要来自于两个方面:

    一是ruby gc的实现本身存在很多问题,关于这一点,以前已经多次讨论,随着mbari内存补丁的发布,已经基本解决。特别是随着集成mbari补丁,以及不断完善ruby实现,已经让ruby可以作为一个稳定的后台服务的实现了。

    二是一些内存处理有问题的ruby本地扩展库造成的内存泄露,这种情况就必须尽量避免使用第三方库,即使要用,也要保证它的稳定性。比方说javaeye最早使用rmagic处理图片,之后改成了mini_magick,javaeye曾经一直使用hpricot来处理html tag和博客导入,也经常造成内存泄露,最近把hpricot全部替换成nokogiri以后解决了内存泄露。

    在这里特别值得一提的是ree(),随着ree1.8.7版本发布,ree不但可以提供ruby稳定的内存使用,而且经过gc参数的调整,可以最大化ruby服务端处理性能,非常值得推荐使用。

    javaeye网站在去掉hpricot,使用最新版本ree之后,内存泄露问题已经彻底消失。目前javaeye网站使用的是rails2.3.4版本,fastcgi进程启动以后使用了230mb内存,经过一段时间运行之后,可以稳定在210mb长期运行,性能也相当不俗。

    因此现在可以认为,ruby作为服务器端应用已经到了成熟期了,完全可以放心在大型应用系统当中使用了,特别是ruby也可以用来作为一个不需要高性能处理的long-term后台服务了。

    最后简单说说ree的安装:

    1、下载:http://www.rubyenterpriseedition.com/download.html

    2、ree提供了编译好的二进制版本,不过我喜欢自己编译,编译的步骤可以看文档:

    3、编译和标准ruby是一样的,但是ree提供了google tcmalloc库,可以提高ruby分配内存的效率,编译tcmalloc稍稍麻烦一点:

    cd ruby-enterprise-x.x.x/source/distro/google-perftools-*
    ./configure --prefix=/usr/local --disable-dependency-tracking
    make libtcmalloc_minimal.la
    rm -f /usr/local/lib/libtcmalloc_minimal*.so*
    cp -rpf .libs/libtcmalloc_minimal*.so* /usr/local/lib/
    编译ruby的时候修改makefile文件,寻找 libs,添加$(prelibs) 
    libs = $(prelibs) -ldl -lcrypt -lm  $(extlibs)
    make prelibs="-wl,-rpath,/usr/local/lib -l/usr/local/lib -ltcmalloc_minimal"
    


    然后检测一下是否链接了tcmalloc库:
    ldd ruby
    应该可以找到如下信息:
    	libtcmalloc_minimal.so.0 => /usr/local/lib/libtcmalloc_minimal.so.0 (0x00002b748b51c000)


    分享到:
    |
    评论
    16 楼 kaogua 2013-10-03  
    现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是否可以继续写写新版本的情况。
    15 楼 2010-03-23  
    rails3会不会遭遇滑铁卢?

    目前已转入python研究,理由:

    1 社区的态度,对比两个社区的一些开源的lib就知道了

    2 厌烦过多的meta program
    14 楼 2010-03-23  
    但是ror下报表工具太少了
    13 楼 2010-02-25  
    嗯,太好了,成熟就好!否则停留在玩具阶段不是长久之计。

    打算过一阵子就开始ror。
    12 楼 2010-02-02  
    ree 1.87 2010.1 已经出来了,搭配的tcmalloc是1.4。但是1.5的tcmalloc已经可以下载到。
    经测试,性能有稍许提升。
    11 楼 2010-01-19  
    还不如迁移到jruby上,cruby之烂,有目共睹。
    10 楼 2010-01-07  
    只用passenger 不用apache 可以启动码?
    9 楼 2010-01-07  
    ruby 内存一直增加
    ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux], mbari 0x8770, ruby enterprise edition 2009.10
    rails 1.2.6 rails 2.3.5同时存在
    sqlite3-ruby (1.2.5)
    sqlite3 mysql数据库,都用过
    内存总是在增加。
    ldd ruby
    libtcmalloc_minimal.so.0 => /usr/local/lib/libtcmalloc_minimal.so.0 (0xb7eec000)
    现在内存还是一直在增加,1g内存,由原来的2.9%,增加到4.0%
    请问还要配置什么啊,
    ubuntu8.0.4 32位系统
    请求帮助?
    我是用mongrel或webrick启动的
    8 楼 2009-11-27  
    t0uch 写道
    tcmalloc 1.4不能在10.6下使用吧?
    potian用的是10.5?


    一直懒得升级,还在用10.5
    7 楼 2009-11-26  
    tcmalloc 1.4不能在10.6下使用吧?
    potian用的是10.5?
    6 楼 2009-11-25  
    在mac下面使用tcmalloc(现在的ree自动编译进去了)请注意,象strdup这样的函数没有调用tcmalloc分配内存,因此会导致tcmalloc free的时候出现free invalid pointer这样的错误

    如果你在写c扩展的话,根据平台需要判断一下自己用malloc和memcpy写一个strdup

    linux下面的libc应该没有这个问题
    5 楼 2009-11-22  
    希望发展的更好,期待ruby性能进一步提升
    另外我已经把ruby应用到教育局等网站 也用rails做了甲流信息采集分析系统,目前情况来看运行稳定!
    4 楼 2009-11-21  
    potian 写道

    用ab和loadrunner昼夜轰炸,1.9.1配置的情况下大约在2天后,每个thin达到2g的内存占用,而用ree永远保持在180m左右

    这个数据实在是很诱人滴
    3 楼 2009-11-20  
    ree表现相当不错,我这里有一个实际的项目

    用ab和loadrunner昼夜轰炸,1.9.1配置的情况下大约在2天后,每个thin达到2g的内存占用,而用ree永远保持在180m左右

    性能上ree也比1.9.1能够高出20%左右

    不过1.9的unicode处理和语法实在是有很大的改进,现在只好等到1.9.2看看怎么样了
    2 楼 2009-11-20  
    希望真能到發展起來,我現在選擇了ruby作為業餘語言
    1 楼 2009-11-19  

    我看ruby离“大繁荣大发展”的时期不远了, 根据我的测试,ree1.87的性能和python2.6.2差不多,所以ruby的性能完全可以胜任一些大规模软件开发,实时性的东西可以交给erlang处理

    相关推荐

      云片短息ruby 服务器端api

      gabba - 简单的方式发送服务器端通知至google analytics中

      ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/yukihiro matsumoto)设计并开发。在 ruby 社区,松本也被称为马茨(matz)。ruby 可运行于多种...

      rack提供了一个最小化,模块化和适应性强的界面,用于在ruby中开发web应用程序。 通过以最简单的方式包装http请求和响应,它将web服务器,web框架和软件(所谓的中间件)之间的api统一并提炼成单个方法调用。

      一个非常快速和简单的ruby web服务器

      puma - 一个ruby的并发web服务器

      torquebox - 一个ruby应用程序服务器建立在jboss as7和jruby之上

      ruby 是一种类似于 python 和 perl 的服务器端脚本语言。 ruby 可以用来编写通用网关接口(cgi)脚本。 ruby 可以被嵌入到超文本标记语言(html)。 ruby 语法简单,这使得新的开发人员能够快速轻松地学习 ruby。 ...

      rack, 模块式 ruby web服务器接口 rack,模块化 ruby-web服务器接口 rack 提供了在 ruby 中开发web应用程序的最小。模块化和。 通过最简单地将http请求和响应包装起来,它将web服务器。web框架和( 所谓的中间件) ...

      语言服务器[alpha质量] ruby语言服务器实现。安装如果使用的是vscode,请安装扩展。码头工人只需您就可以从拉取$ docker pull mtsmfm/language_server-rubyruby宝石将此行添加到您的应用程序的gemfile中: gem '...

      ruby ssh备份远程服务器脚本,主要是学习net/scp这个模块

      falcon:用于ruby的高性能web服务器,支持http/2和https

      rails应用程序的服务器时间标头

      ruby一个方便的局域网服务器 最大用处就是当共享不能访问时用它代替 还有个用处就是耍酷 1.下载安装 ruby (mac 平台已经自带) 配置环境变量 把ruby安装后的bin路径配到环境变量中 2.开命令行输入 gem install ...

      gcm, 在通过谷歌云消息传递( gcm )的设备上,gem 可以帮助开发者从 ruby 后端服务器发送数据到他们的移动应用程序 用于android和ios的google云消息传送( gcm ) gcm gem 允许你的ruby 后端通过 google云消息向android...

      ruby for rails 英文原版, pdf格式 ...第四部分讲述了如何应用第二部分和第三部分的ruby知识来开发rails应用。 本书适合于ruby的初学者,也适合于想要进一步提高ruby编程技能,开发实际rails应用的web程序员。

      ruby游戏我为服务器端ruby类所做的ruby游戏(2019)

      ansible: ruby on rails 服务器(ubuntu 16.x)

      服务器端应用程序的不引人注目javascript框架可以以最少的服务器端代码更改实现快速灵活的前端。 该存储库是unpoly javascript代码及其对ruby on rails( unpoly-rails gem)的(可选)绑定的unpoly-rails 。入门...

    global site tag (gtag.js) - google analytics
    网站地图