【发布时间】:2010-01-07 00:27:37
【问题描述】:
有人发布了类似here 的内容,但是我很好奇哪个会运行得更快并节省更多内存?我知道 Matz 在 1.9 中进行了许多增强,但我也支持 Phusion 人员所做的决定。
我的问题是在我只有 265mb 内存的 VM 上运行哪个最好?
【问题讨论】:
标签: ruby
有人发布了类似here 的内容,但是我很好奇哪个会运行得更快并节省更多内存?我知道 Matz 在 1.9 中进行了许多增强,但我也支持 Phusion 人员所做的决定。
我的问题是在我只有 265mb 内存的 VM 上运行哪个最好?
【问题讨论】:
标签: ruby
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
【讨论】:
由于 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#
【讨论】: