【问题标题】:Ruby 1.9.1 or Ruby 1.8.7 Enterprise Edition on a small VM?小型 VM 上的 Ruby 1.9.1 或 Ruby 1.8.7 企业版?
【发布时间】:2010-01-07 00:27:37
【问题描述】:

有人发布了类似here 的内容,但是我很好奇哪个会运行得更快并节省更多内存?我知道 Matz 在 1.9 中进行了许多增强,但我也支持 Phusion 人员所做的决定。

我的问题是在我只有 265mb 内存的 VM 上运行哪个最好?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    1.8.7 EE 现在是更安全的选择。 Ruby 应用程序的主要问题是明显无法共享内存(写时复制问题)和修复这是 EE 的主要目标。

    我管理 8 个不同的站点,我们产品的所有运行版本都运行在 Rails、Merb、Rack 和 Thin 的混合体上,所有运行在普通的旧 Ruby 1.8.7 上。对于小型 Rails 应用程序,256Mb 就可以了。

    您可以从下面看到我们的应用程序由 6 个进程组成;导轨 (2) 和 Merb (4)。 Rails 进程 (mongrel_rails) 每个都使用 104Mb 的实际内存。我们的应用程序相当复杂,响应时间大约为 0.5 秒,因此我们希望能够处理来自 2 个 Rails 进程的大约 4/5 并发用户。看看令人震惊的少量共享内存,看看为什么 EE 如此有意义。我希望与 EE 共享更高的部分。

    正如他们所说的“您的体验可能会有所不同”,但没有什么能阻止您甚至尝试简单的旧 Ruby/Rails 并且只有在需要时才迁移到 EE。

    top - 08:57:48 up 128 days, 11:57,  1 user,  load average: 0.07, 0.09, 0.09
    Tasks:  76 total,   1 running,  75 sleeping,   0 stopped,   0 zombie
    Cpu(s):  2.4%us,  0.1%sy,  0.0%ni, 96.2%id,  0.0%wa,  0.0%hi,  0.0%si,  1.3%st
    Mem:   1048796k total,   745840k used,   302956k free,     5192k buffers
    Swap:  2097144k total,   634636k used,  1462508k free,   124816k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                 
    25875 root      20   0  271m 104m 4616 S    0 10.2 141:07.07 mongrel_rails                                                                            
    25872 root      20   0  263m 102m 4648 S    0 10.0 142:11.86 mongrel_rails                                                                            
    21089 root      20   0  192m  84m 2436 S    0  8.3   2:52.03 merb                                                                                     
    21088 root      20   0  173m  80m 2436 S    0  7.9   2:51.73 merb                                                                                     
    21090 root      20   0  179m  74m 2436 S    0  7.3   2:42.83 merb                                                                                     
    21086 root      20   0  113m  34m 1660 S   11  3.4   3752:37 merb                                                                                     
     4874 clavis    20   0  122m  31m 3804 S    0  3.1 127:52.87 profile_report                                                                           
     3662 mysql     20   0  368m  22m 3280 S    0  2.2 464:01.81 mysqld             
    

    【讨论】:

    • 那么这两个杂种正在运行常规的 ruby​​ 1.8.7 而 merb 正在运行 EE?所以在你的情况下,如果我没看错的话,使用 EE 的 RSS 大约会低 20%。
    • 很遗憾,没有,Merb 也在标准 1.8.7 上。该应用程序有很多方面,最关键的是使用 Merb 编写,因为它提供了比 Rails 更好的性能。如果我们再做一次,我们会通过 Thin 使用 Rack。
    【解决方案2】:

    由于 Rails 3 将针对 Ruby 1.9 进行高度优化,并且 Ruby 1.9 具有许多与 REE 类似的优化,因此 Ruby 1.9 的内存使用可能非常接近,并且比 REE 更快。

    Yehuda 谈 Rails 3:

    http://railsonedge.blogspot.com/2009/03/yehuda-katz-talks-about-rails-30.html
    http://www.oreillynet.com/pub/e/1338

    关于 Ruby 1.9 的 REE 的小型 Google 小组讨论

    http://groups.google.com/group/emm-ruby/browse_thread/thread/b5ab0f02c3faac7e#

    【讨论】:

    • 我希望 Matz 将一些 REE 的东西合并到上游,尤其是垃圾收集器。
    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    相关资源
    最近更新 更多