0

我是 Ruby on Rails 的新手,很快就开始了一个项目。在阅读了不同的 Ruby 实现之后,我想知道使用哪种设置。我的项目预计会有相当多的流量。

我正在考虑两个选项:MRI Ruby (v 2.0) 和 JRuby (v 1.9)。我担心 MRI Ruby 不是多线程的,并且担心这会对 Web 应用程序产生影响。也许应用服务器可以消除这个问题?现在看起来我们将使用 Puma 作为应用程序服务器。

简而言之,我应该使用 JRuby,因为它在 1.9 上是多线程的,还是应该在 2.0 上使用 MRI Ruby?

4

2 回答 2

1

TL;博士

使用 Puma 或 Passenger 可以解决这个问题,因为它们自己处理线程。我建议尽可能使用最新版本的 Ruby 和 Rails,因为这将最大限度地减少您在升级应用程序时需要做的升级工作。


这是一篇精彩的文章,可以解决您的问题。

总结一下。

Puma 只支持多线程。Phusion Passenger 的开源变体是多进程单线程。Enterprise 变体可以配置为单线程或多线程。

...

Puma 和 Phusion Passenger Enterprise 都可以是混合多进程多线程。也就是说,运行多个多线程进程。混合模式允许 Ruby 和 Python,尽管它们具有全局解释器锁,但可以充分利用所有 CPU 内核。 [1] 在 Puma 中,混合模式被称为“集群”。[1] 只有 MRI 上的情况,JRuby 和 Rubinius 上没有。JRuby 和 Rubinius 完全支持单个进程中的多核线程。

换句话说,Puma 和Passenger 都能够将任何Ruby 实现视为多线程。他们通过使用多个进程和多个线程之间的混合来做到这一点。这仅比简单的多线程重一点。

老实说,我认为这不是您目前需要担心的问题。等着看你的服务器如何处理网站的流量。

于 2013-08-20T11:19:16.233 回答
0

老实说,如果您是 Ruby 和 Rails 的新手,请坚持使用默认值 - 在这种情况下为 MRI。Ruby 享有多种出色的实现(MRI、JRuby、Rubinius 等),它们可以毫无问题地运行您的 Web 应用程序。从 MRI 开始,如果需要,您可以随时决定稍后进行更改。

当您的应用程序的工作开始时,您将能够更好地判断什么是最好的 Ruby 实现和服务器 - 更精通平台,更了解您的具体挑战(并非每个应用程序都依赖于多线程性能)。

享受道路!

于 2013-08-20T11:12:42.833 回答