我正在使用乘客/Apache 2.2 在我的服务器上运行 redmine(一个 RoR 应用程序)。乘客和红宝石正在使用太多的内存。
有没有更有效的方式来运行 redmine/ruby?
我只需要支持六个 redmine 用户。我想继续使用 Apache,但我愿意接受所有不是“使用 nginx/lighttpd”的建议。
(以下数据来自 512MB VPS,因此 Ruby 仅用于 redmine 超过 128MB)
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
那么,有什么比Passenger更适合我的呢?
谢谢你的想法!!
您可以配置 Apache/passenger 生成的 Rails 进程的数量。对于您的大小(3 个并发请求),您应该可以使用 2 个 rails 进程:
在你的 apache 配置中设置这些:
MaxPoolSize 决定了最多可以启动多少个实例,MaxInstancesPerApp 决定了每个 web-app 可以拥有多少个实例。
你可能想玩:
指定实例在卸载之前必须处于空闲状态的秒数。默认值为 300 秒。
我运行 3 个实例的高流量 Web 应用程序没有任何问题。
哦,而且——Ruby 企业版也有帮助。
您使用的是 ruby 企业版吗? http://www.rubyenterpriseedition.com/
要么使用Ruby 企业版(推荐与 Passenger 一起使用),要么使用加载速度更快的 Ruby 1.9 。
您需要支持多少并发请求?我会使用nginx和一小群mongrels。通过这种方式,您可以限制 ruby 应用程序使用的资源量。
我使用 apache proxypass 为 redmine 运行 mongrels/mongrel_cluster 取得了更大的成功。它不需要那么高的性能(它们是一堆非常大/慢的进程,并且倾向于在此之上调用外部进程。您可能想在基准情况下尝试它并查看。它也死了-对我来说很容易设置。