2

据我所知,当我们在 64 位 Ruby 上运行 Ruby 应用程序时,它比 32 位 Ruby 消耗更多的内存,这是由于指针地址空间。

我的机器有 64GB 内存,所以为了访问全部 64GB 内存,我安装了 64 位操作系统。

  1. 是否可以在 64 位操作系统上安装 32 位 Ruby?
  2. 通过在 64 位操作系统上安装 32 位 Ruby,我的 32 位 Ruby 是否能够使用 64 GB RAM?
  3. 在 64 位操作系统上运行 32 位 Ruby 的优缺点是什么?

我注意到在 64 位 Ruby 上运行我的 Ruby on Rails 应用程序比 32 位 Ruby 消耗更多的 RAM。我正在使用 Phusion Passenger,因此它为每个请求分叉或创建新的 Ruby 进程,因此每个单独的 Ruby 进程(用户请求)在 32 位 Ruby 中限制为 2 GB,或者整个 Ruby 进程在 32 位中仅限访问 2GB-一点鲁比。


我的 Rails 应用程序代码库很大,我计划为单个服务器中的多个客户端复制与多个 Rails 应用程序相同的代码,因此每 MB RAM 对我来说都很重要,所以如果有更多 RAM 可用,我可以为其他客户端运行其他应用程序。

有关应用程序架构的更多信息,请参阅“ (使用 phusion 乘客 + Nginx)运行具有多个实例名称和相同端口 (80) 的相同 rails 应用程序”。

4

2 回答 2

4

是否可以在 64 位操作系统上安装 32 位 Ruby?

  1. 对的,这是可能的。

通过在 64 位操作系统上安装 32 位 Ruby,我的 32 位 Ruby 是否能够使用 64 GB RAM?

  1. 不,它无法访问 64 GB RAM。32 位进程默认限制为 2 GB,如果标记为 LARGE_ADDRESS_AWARE,则最大为 3,但不会更多。

在 64 位操作系统上运行 32 位 Ruby 的优缺点是什么?

  1. 缺点:您的内存限制为 2 GB。

不过,你什么都不担心。从 32 位(4 字节)到 64 位(8 字节)的指针大小仅影响指针。如果您有 64 GB 的 RAM 和可以使用它们的 64 位处理器,请使用 64 位版本。

于 2013-04-15T18:17:43.730 回答
2

...我计划为单个服务器中的多个客户端复制与多个 Rails 应用程序相同的代码,因此每 MB RAM 对我来说都很重要...

不要编写单体应用程序,而是编写较小的 Rails 应用程序,这些应用程序调用中央代码,为所有调用它的应用程序处理尽可能多的处理。它会慢一点,但在内存方面效率更高。

看看像RabbitMQ这样的后端。对于此类任务,它非常高效且出色。AMQP gem 是您的朋友。

使用 JSON 将数据扔到队列中。它使调试变得容易。

于 2013-04-15T19:19:43.200 回答