论坛首页 编程语言技术论坛

Twitter性能提升的秘籍

浏览 14698 次
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-02   最后修改:2009-04-04
Twitter在过去很长的一段时间中由于高访问量的而导致严重性能问题,甚至宕机,在经过了一些优化以后,目前Twitter在这方面已经有了很大的改善。
来自Twitter的开发人员Evan最近在QCon做了一个演讲,介绍了优化细节:
http://www.slideshare.net/Eweaver/improving-running-components-at-twitter

几个和Ruby相关的优化内容:
1. 采用了写入式缓存替代原先的读取式缓存,Twitter已经开源了这个插件cache-money

2. 采用基于C库的memcached client取代原先的ruby库,通过改进的hash算法和multiget,从原先没有cache的情况下每秒3.23个请求可以提高到139.03个请求,这个库也是开源的,Evan还提供了Twitter目前在用的稳定版本

3. Ruby的GC太差,用Scala改写了中间层的MQ Server,这里有一篇关于Twitter使用Scala的详细报道:
http://www.artima.com/scalazine/articles/twitter_on_scala.html

4. 给Ruby打了一些GC补丁,比如MBARI/Railsbench,速度有35%的提升。Evan还公布了Twitter设置的Railsbench patch GC参数,可以参考一下。
   发表时间:2009-04-02  
对第三点比较有兴趣,不知道这个MQ Server是个什么样的东东
0 请登录后投票
   发表时间:2009-04-03  
t0uch 写道
对第三点比较有兴趣,不知道这个MQ Server是个什么样的东东


好像也是Twitter的starling
0 请登录后投票
   发表时间:2009-04-03   最后修改:2009-04-03
t0uch 写道
对第三点比较有兴趣,不知道这个MQ Server是个什么样的东东


Message Queue Server 吧,我的理解是用来执行异步任务。Twitter 有个 gem starling 就是一个 MQ Server 实现,另外还有人做了个叫 workling 的插件,支持包括 starling 和 spawn 等多种不同的 runner 后端,很好用。

参考这个 http://playtype.net/past/2008/2/6/starling_and_asynchrous_tasks_in_ruby_on_rails/
0 请登录后投票
   发表时间:2009-04-03  
ActiveMQ就行,stomp协议可以用
0 请登录后投票
   发表时间:2009-04-03  
starling是ruby写的MQ,限于ruby GC的性能,还是不行。twitter后来用scala重新了一遍starling,这个就是kestrel项目,性能和稳定性都好于starling。

scala是个很有意思的东西,跑在JVM上面的脚本语言,可以编译为Java class,很有前途。
0 请登录后投票
   发表时间:2009-04-03  
我记得Twitter还要用Erlang... 忘记他们是用在什么地方的了...
0 请登录后投票
   发表时间:2009-04-03  
刑天战士 写道
ActiveMQ就行,stomp协议可以用


ActiveMQ不是不好用,个人觉得太bloated了
其实有很多的轻量级的Queue可以选择,刨去哪个starling,还有beanstalkd和最近重新用c改写的gearman
目前都还不支持持久化,不过都有支持的计划。。。
0 请登录后投票
   发表时间:2009-04-03  
問個問題.
Twitter當初為什麽會選型rails呢?Twitter使用不是很多.初步感覺功能頁面也不是很多.如果選用java或php是不是不用在性能方面費這么多事...
1 请登录后投票
   发表时间:2009-04-03  
yb31 写道
問個問題.
Twitter當初為什麽會選型rails呢?Twitter使用不是很多.初步感覺功能頁面也不是很多.如果選用java或php是不是不用在性能方面費這么多事...

不了解Twitter当初用rails的原因,不过根据我个人经历和接触过的开发人员,大部分用了Rails以后就不会再想用Java了,5行ruby代码可以搞定的事情,Java要用30行代码+20行配置,太累了。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics