Ruby Enterprise Edition (REE) 是標准Ruby解析器的改進版本,號稱能夠讓rails應用節約1/3的內存使用量,並且有有更好的性能提高;REE提供了Google tcmalloc庫,可以提高Ruby分配內存的效率。
JavaEye網站在過去的Ruby on rails實踐當中,曾經被Ruby的內存泄露問題深深的困擾過,並且自己編寫了監控Ruby進程泄露的監控腳本來解決這個問題。造成Ruby內存管理不善的原因主要來自於兩個方面:
一是Ruby GC的實現本身存在很多問題,關於這一點,以前已經多次討論,隨著MBARI內存補丁的發布,已經基本解決。特別是隨著Ruby Enterprise Edition集成MBARI補丁,以及不斷完善Ruby實現,已經讓Ruby可以作為一個穩定的後臺服務的實現了。
二是一些內存處理有問題的Ruby本地擴展庫造成的內存泄露,這種情況就必須盡量避免使用第三方庫,即使要用,也要保證它的穩定性。比方說JavaEye最早使用RMagic處理圖片,之後改成了mini_magick,JavaEye曾經一直使用hpricot來處理html tag和博客導入,也經常造成內存泄露,最近把hpricot全部替換成nokogiri以後解決了內存泄露。
REE(Ruby Enterprise Edition),隨著REE1.8.7版本發布,REE不但可以提供ruby穩定的內存使用,而且經過GC參數的調整,可以最大化ruby服務端處理性能,非常值得推薦使用。JavaEye網站在去掉hpricot,使用最新版本REE之後,內存泄露問題已經徹底消失。目前JavaEye網站使用的是rails2.3.4版本,fastcgi進程啟動以後使用了230MB內存,經過一段時間運行之後,可以穩定在210MB長期運行,性能也相當不俗。因此現在可以認為,Ruby作為服務器端應用已經到了成熟期了,完全可以放心在大型應用系統當中使用了,特別是Ruby也可以用來作為一個不需要高性能處理的long-term後臺服務了。
![](/hh/css/css-img/weixinshare.png)
www.rubyenterpriseedition.com - 952 - Ruby Enterprise Edition