在64位操作系统上安装32位Ruby

问题描述 投票:2回答:2

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

我的机器有64GB RAM,所以为了访问完整的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有点Ruby。


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

有关应用程序体系结构的更多信息,请参阅“(Using phusion passenger + Nginx) running same rails app with multiple instance names with same port (80)”。

ruby x86 64bit passenger
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 max,但不会更多。

在64位操作系统上运行32位Ruby有哪些优缺点?

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

但是,你无所畏惧。指针大小从32位(4字节)到64位(8字节)仅影响指针。如果您有64 GB的RAM和可以使用它们的64位处理器,请使用64位版本。


2
投票

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

不要编写单片应用程序,编写较小的Rails应用程序,这些应用程序调用中央代码,为所有调用它的应用程序处理尽可能多的处理。它会慢一点,但记忆效率要高得多。

看看像RabbitMQ这样的后端。对于这类任务来说,它非常高效且非常棒。 AMQP宝石是你的朋友。

使用JSON在队列中抛出数据。它使调试变得容易。

© www.soinside.com 2019 - 2024. All rights reserved.