在 Apache +Passenger == 上运行 Ruby on Rails 应用程序需要大量内存

Ric*_*ich 4 vps redmine ruby ruby-on-rails phusion-passenger

我正在使用乘客/Apache 2.2 在我的服务器上运行 redmine(一个 RoR 应用程序)。乘客和红宝石使用太多内存。

有没有更有效的内存方式来运行 redmine/ruby?

我只需要支持六个 redmine 用户。我想继续使用 Apache,但我愿意接受所有不是“使用 nginx/lighttpd”的建议。

(以下数据来自 512MB VPS,所以 Ruby 使用超过 128MB 仅用于 redmine)

user ....... %mem   ....... process
-----------------------------------
www-data ... 13.6   0:00.65 ruby1.8
www-data ... 12.2   0:04.86 ruby1.8

www-data ...  9.4   0:04.15 apache2
www-data ...  9.0   0:13.94 apache2
www-data ...  3.2   0:00.27 apache2

root     ...  2.5   0:00.23 apache2 
root     ...  1.9   0:01.19 ruby1.8 
Run Code Online (Sandbox Code Playgroud)

那么,有什么比乘客更好的呢?

谢谢你的想法!!

小智 6

您可以配置多少 Rails 进程处理 Apache/passenger spawns。对于您的规模(3 个并发请求),您应该可以使用 2 个 rails 进程:

在你的 apache 配置中设置这些:

PassengerMaxPoolSize 2
PassengerMaxInstancesPerApp 2
Run Code Online (Sandbox Code Playgroud)

MaxPoolSize 确定最多可以启动多少个实例,MaxInstancesPerApp 确定每个 Web 应用程序可以拥有多少个实例。

你可能想玩:

PassengerPoolIdleTime 
Run Code Online (Sandbox Code Playgroud)

指定实例在卸载之前必须空闲的秒数。默认值为 300 秒。

我使用 3 个实例运行相当高流量的 Web 应用程序,没有任何问题。

哦,还有 - Ruby 企业版也有帮助。