发新话题
打印

ruby on rails应用性能优化之道

ruby on rails应用性能优化之道

这是一篇我们运营JavaEye网站将近半年时间所得到经验的总结。目前在整个rails社区,都极少有运营rails大访问量网站经验的人详细的谈这个话题。至于国内,rails应用都停留在学习和尝试阶段,真正投入商业运营的基本找不到,所以谈这个话题为时太早,颇有对牛弹琴的感觉。所以权当是个人的总结性文章吧,也不会很详细的展开谈论,能对大家有所启发就好。

一、硬件

1、CPU
ruby解析器相对于JVM,PHP解析器来说,比较低效,可能会导致比较多的context switch,因此提高CPU和内存之间的总线带宽和传输速度会对ruby应用有比较大的性能提升。在目前主流的x86_64 CPU当中,AMD Opteron在CPU芯片内置内存控制器,可以有效提高CPU和内存数据交换速度,提高context switch能力。所以用AMD Opteron比Intel Xeon EM64T性能要好很多。

2、物理内存
ruby是以进程方式运行的,rails应用的并发响应能力主要取决于ruby进程的数量。一个最简单的rails应用,一个ruby进程占用的物理内存一般不过30-40MB,但是对于真正复杂的,而且数据库访问频繁,数据量大的rails应用来说,ruby进程稳定的物理内存占用至少100多MB,经常达到200多MB,甚至300MB。以开10个ruby进程计算,那么物理内存使用上限就是3GB,所以4GB物理内存是起码的。

二、操作系统

1、Linux distro
对于AMD x86_64的CPU来说,SLES要比RHEL有更多的优化。

2、32位版本还是64位版本
应该使用64位版本操作系统,以充分发挥x86_64 CPU的性能,并且x86_64的Linux很多Kernel参数也大很多,代价就是需要更多的物理内存。所以内存多多益善。

3、文件系统
rails会对每个浏览器会话在硬盘生成session文件,一个繁忙的网站,临时文件目录下面有上万乃至几万个session文件是很常见的现象。对于这种目录下面几万个小文件的存取,reiserfs要比ext3性能好很多倍。

三、Web Server

主流的选择是apache2.2,lighttpd,litespeed。apache2.2可以首先排除,lighttpd和litespeed都不错,但我会选择开源免费的lighttpd。至于lighttpd的各种优化参数这里不谈。

四、ruby的部署

1、ruby GC
可以使用railsbench提供的GC patch,以优化ruby内存使用,降低GC频率,提高throughput,代价就是ruby进程的物理内存占用加倍。所以物理内存越多越好,4G根本不够用,8G,16G绝对不嫌多。

2、FCGI还是mongrel
ruby进程可以以FCGI方式来运行,以FastCGI协议和Web Server通讯,也可以以HTTP Server方式来运行(即Mongrel),以HTTP协议和Web Server通讯,这两种方式性能上没有什么差异。FCGI方式,在单机上面通过Unix Socket和Web Server通讯,效率比走TCP Port要高。

3、开多少个ruby进程
ruby进程数量和web server的connection数量的比例没有定规,少了多了都会降低性能,要靠实践去摸索,也要参考CPU和内存资源的使用状况。

五、应用程序

1、避免使用component

2、hash的key使用symbol

3、对于ORM来说,数据库的表设计的原则是颗粒度应该小一些,把常用字段和不常用字段尽量分离到不同表,严重影响性能的大字段分离到单独的表

4、在不使用对象缓存的情况下,查询方法的:include可以预加载关联对象,避免n+1问题

六、缓存

1、rails的页面缓存,Action缓存和片断缓存
rails提供的缓存方式可以有效降低对应用服务器的负载,但是缓存颗粒度太粗,适应范围比较狭窄,缓存过期的处理比较烦琐。

2、对象缓存
rails应用本身是可以水平扩展的,性能瓶颈往往还是数据库访问,使用CachedModel对象缓存可以有效降低数据库负载,但CachedModel不像Hibernate二级缓存那么强大,不能够针对非主键查询进行缓存读取,不能针对非主键查询进行缓存填充,和file-column有冲突,需要自行覆盖model对象的save方法等等。另外在使用对象缓存的情况下,应该把查询方法的:include去掉,避免关联查询无法利用缓存的现象。

3、查询缓存
对于统计类耗时查询,如果不要求实时性,那么可以使用memcache-client将查询结果缓存到memcached里面。

七、Session的存储方式

由于Linux文件系统的高效性以及操作系统使用内存来做disk cache,因此默认使用硬盘文件保存session,并不会带来性能瓶颈,使用memcached并不会提高多少IO性能。如果一定要优化session硬盘读取,除了memcached,可以使用RAMDISK。
这世界总有你不明白

TOP

TOP

选矿设备选铁设备选矿生产线球磨机价格报价

TOP

UR dofus

dofus kamas

cool day, haha!
i play dofus online game, so i need buy dofus kamas , buy cheap dofus kamas,
dofus money

TOP

沈阳宏海机械厂供应梅花糕机024-82116562

沈阳宏海机械厂www.086hh.com批发零售梅花糕机!单模5瓣梅花型,模具带上盖,两边对称带有手把,使用方便操作简单!另提供女士用轻便7头梅花糕机!赠送专用面浆壶,专用挑钩,操作台平面设计图,制作工艺流程光盘!电话:024-82116562 QQ:491783951
沈阳宏海

TOP

香港FAG轴承、香港FAG进口轴承、香港进口轴承

TOP

dofus 3

so do  you sell dofus kamas,if you have cheap dofus kamas , please connect me as soon as possible!
hihi^^
i want to buy more and more , more and more!
so please take your time !
do you have dofus money, dofus gold ? i want them , i love them !
i have change a new envionment , it's new ,so it's interesting and changllege to me!
in a world ,i love dofus kamas , cheap dofus kamas !

TOP

加密狗破解加密锁破解加密狗解密QQ1167388

加密狗破解加密锁破解加密狗解密QQ1167388加密狗破解加密锁破解加密狗解密QQ1167388加密狗破解加密锁破解加密狗解密QQ1167388详情请见:http://www.nbbn.net/vip/lbin
软件加密狗破解技术和方法下载,复制加密狗锁电话15988877770联系QQ1167388

TOP

丽妍堂

丽妍堂|真轻松|排汗运动机|厂家直销13738963879原厂正品--丽妍堂真轻松排汗运动机,蒸美康排汗运动机厂家授权,优惠直销.订购热线0579-87368390,运动排汗,强身健体,采用薰蒸的原理,集排毒,减压,健体,美容养颜,减肥,黄金睡眠功效为一体.每天蒸一蒸,跟疲劳,斑点,毒素说再见. 丽妍堂排汗,丽妍堂排汗机好不好,丽妍堂排汗机怎么样,丽妍堂排汗机好吗,丽妍堂真轻松排汗机 丽妍堂排汗运动机,丽妍堂排汗机的价格,丽妍堂真舒服排汗机,丽妍堂排汗机好不好,丽妍堂排汗机怎么样,丽妍堂排汗机好吗,丽妍堂排汗机价格,丽妍堂蒸汽排汗机。公司网站:www.hd273.com

TOP

试验箱 实验箱 华夏环境试验设备有限公司

<a href="http://www.china-huaxia.cn/page/cp.asp?showid=146">试验箱</a>
<a href="http://www.china-huaxia.cn/page/cp.asp?showid=146">实验箱</a>
<a href="http://www.china-huaxia.cn/page/cp.asp?showid=170">盐雾试验箱</a>
<a href="http://www.china-huaxia.cn/page/cp.asp?showid=170">盐雾腐蚀试验箱</a>
<a href="http://www.china-huaxia.cn/page/cp.asp?showid=168">高低温试验箱</a>
专业从事网站优化,SEO,搜索引擎优化等专业网络技术

TOP

北京光盘制作有限公司.

DVD制作需要精良的设备来满足它的运算和数据传输光盘制作,硬件环境当然是越快越好,主机系统最好采用PII 400以上PC机或者G3/300以上的苹果电脑;内存就不用我罗嗦了,至少需要128MB;光盘刻录由于DVD产品的数据传输量较大,PC系统一定采用SCSI接口的设备来传输数据[光盘打印;当然如果多台电脑同时使用效率会提高不少,但是您最好将网络升级成光纤网,以提高工作效率。至于软件环境一般DVD创作系统的运行环境是Windows NT(PC)、Macintosh OS8.0以上版本或者工作站上使用的专用UNIX操作系统;光盘印刷目前的DVD制作软件还不是十分丰富,一般购买硬件的时候,光盘刻录都会有开发软件配套,再此就不在罗嗦。(如图一

TOP

云南轴承 云南NSK轴承 云南NSK进口轴承

TOP

节能球磨机 节能球磨机价格报价

我公司长期供应:节能球磨机 节能球磨机价格报价    破碎机  选矿生产线 选矿设备
联系方式:郭经理 13838506408

TOP

在北京能爱勇敢爱,不爱请离开!飞机

其实有时候相爱的北京到里斯本机票两个人不在一起并不是不适合或者不爱对方,也许是因为太爱对方了,所以对方无心的言语可能在不经意中刺伤了你,所以两个人故意说了一些伤害飞机票对方的话,甚至各奔东西,但是心里却有着万分不舍,只是碍于面子或者害怕国际机票被对方拒绝而放弃了给自己和对方一个重新相知相爱的机会.既然如此,何不试着包容!特价机票 地图  一次默默的放弃,放弃一个心仪却无缘份的朋友;放弃某种投入却无收获的感情;放弃某种心灵的期望;放弃某种思想。北京到马德里机票这时就会生出一种伤感,然而这种伤感并不妨碍自己去重新开始!
  曾经有种感觉,想让它成为永远。过了许多年,才发现它已渐渐消逝了。然后才懂:原来握在手里的,不一定就是我们真正拥有的;我们所拥有的北京到巴塞罗那机票,也不一定就是我们真正铭刻在心的!其实人生很多时候需要自觉的放弃!
  世间有太多的美好的事物。对没有拥有的美好,我们一直在苦苦的向往与追求。为了获得,而忙忙碌碌。其实自己真正的所需要的,北京到波尔图机票往往要在经历许多年后才会明白,甚至穷尽一生也不知所终!而对已经拥有的美好,我们又因为常常得而复失的经历,而存在一份忐忑与担心。夕阳易逝的叹息、花开花落的烦恼、人生本是不快乐的!北京到开普敦机票
  因为拥有的时候,我们也许正在失去,而放弃的时候,我们也许又在重新获得。对万事万物,我们其实都不可能有绝对的把握。如果刻意去追逐与拥有,就很难走出患得患失的误区。
  我不是因你而来到这个世界,北京到约翰内斯堡机票却是因为你而更加眷恋这个世界!如果能和你在一起,我会对这个世界满怀感激,如果不能和你在一起,我会默默的走开,却仍然不会失掉对这个世界的爱和感激。感激上天让我与你相遇与你别离,完成上帝所创造的一首诗!”生命给了我们无尽的悲哀,也给来我们永远的答案。于是,安然一份放弃,固守一份超脱!不关红尘世俗的生活如何变迁,不管个人的选择方式如何,更不管握在手中的东西轻重如何北京到拉各斯机票,我们虽逃避也勇敢,虽伤感也欣慰!
  我们像往常一样向生活的深处走去,北京到汉城打折机票我们像往常一样在逐步放弃,又逐步坚定!
有一种感觉总在失眠时,才承认是“相思”;
有一种缘分总在梦醒后,才相信是“永恒”;
有一种目光总在分手时,才看见是“眷恋”;
放弃也是一种美丽
有一把伞撑了很久,雨停了也不肯收;
有一束花闻了许久,枯萎了也不肯丢;
  执着,是不悟。
  但,我认为生命中总有一些值得坚持的事,总有一些值得等待的人,让我们懂得珍惜,懂得付出,并因此而快乐幸福。
  喜欢这样的坚持,有时即使会痛,我会痛并快乐着。
  然而,世事变化让我开始学着小心分辨有所坚持和一味坚持的区别。
  记得有人告诉过我一句话:我挽留,表示我珍惜。还是有所坚持。
  当全心全意地付出之后、当默默地坚持与等待之后、当应有的宽容与忍耐之后,想挽留的仍然会走,再坚持就是一味坚持。
  在爱情中,坚持就是以真心换真情。倘若什么都换不回来,坚持就是守住自己。
  留下,不代表还爱;离开,北京到里昂特价机票不代表不爱。得到,未必是幸;失去,也未必是不幸。
  只要,一段感情之后,我们仍然相信爱,仍然可以去爱,仍然爱自己。
  爱自己的人,会不断地追求完善,会对自己的感情和行为负责。只有这样,才有资格去爱别人,才值得被爱。
  但是,没有自律地爱自己是危险的,很容易变成自私。
  “火光燃亮的时候,时间停止,我们是自由的,可以说平时不敢说的话,做平时不敢做的事;火光熄灭,一切就象没有发生过,时间继续。”当苏菲玛索在<心火>里说这句话的时候,我相信她在跳动的火光中,摆脱了世俗的束缚,燃亮了北京到巴黎特价机票爱的信念。坎坷的爱情是容易惊世骇俗,但那样的爱需要更多的勇气。
  如果不能勇敢地爱卓越特价机票,就勇敢地离开;如果不能宽容,就大胆地去恨。
  恨不是不爱,冷漠才是不爱。
  爱,好象很酸的字眼,我视它为一切美好的正直的善良的可爱的情感的统称。
  因为它太可爱,往往成为幌子,背后隐藏着贪欲和占有……
  别让爱欺骗了自己,也欺骗了别人。
  总之,敢为爱坚持为爱付出勇气的人,一定会得到该有的幸福!
  手握得太紧,反而什么也得不到……

TOP

发新话题