哪一个是与“最新轨道”应用程序一起使用的更好选择?杂种,瘦,WEBrick和乘客

时间:2012-10-27 05:24:29

标签: ruby-on-rails scalability passenger thin mongrel

我一直在玩并评估rails的默认WEBrick服务器的其他选项,而Thin是最轻松,最干净的东西,效果非常好!!

你会推荐这些Mongrel,Thin,WEBrick和Passenger中的哪一个以及为什么......? 是否有任何可扩展性特权(集群友好或可以处理某种规模的配置)与这些服务器中的任何一个一起提供..或者在评估它们时是否应该将可扩展性作为参数?

3 个答案:

答案 0 :(得分:9)

Dipak已经回答了你问题的一半,但让我澄清一下事情。 (我是Phusion Passenger的作者之一。)

  • WEBrick是一个玩具网络服务器。没有人在开发中使用它,因为它表现不佳而且据说会泄漏内存。
  • 你说Thin工作得很好。您是否已在反向代理配置中进行设置?因为这就是人们在生产场景中所做的事情。将Thin(或Mongrel或Unicorn)直接暴露给Internet是不安全的。
  • 您可能有兴趣阅读Ruby on Rails server optionsthe Phusion Passenger architectural overview了解更多详细说明。

在可扩展性方面,没有太大区别。它们在生产中的表现非常相似,它们都以大致相同的方式扩展,并且您遇到的任何问题最有可能是由您的应用程序或Rails引起的。好吧,除了WEBrick,你真的不应该在生产中使用它。您可能会看到hello world benchmarkmark的不同之处,但这将是全部。在生产中使用大部分时间将花在应用程序中,因此在hello world benchmarkmark中可见的任何微小速度差异将变得完全不可见。

但是要注意一些细微之处。

  • Phusion Passenger提供了一项名为全局排队的功能。它解决了一个特定的问题,explained in detail in the manual。默认情况下,Nginx和Apache以循环方式代理请求,因此他们遇到了这个问题,而Phusion Passenger没有。有些方法可以在不使用Phusion Passenger时解决这个问题,但需要特殊配置或安装其他Web服务器模块。
  • 根据应用程序的性质,I / O模型可能重要,也可能不重要。 Mongrel,Thin,Unicorn,它们都是多进程的单线程。这对于在本地数据库中查找内容并呈现内容的传统Web应用程序非常有用,但主要用于执行大量HTTP API调用或者必须在I / O上等待很多的应用程序。 Why Rails 4 Live Streaming is a Big Deal详细解释了这一点。

    Phusion Passenger也是多进程单线程,但Phusion Passenger Enterprise支持多线程。 Phusion Passenger Enterprise是开源Phusion Passenger的商业变体,具有适用于大规模生产环境的各种功能。

  • 在大型生产环境中,某些功能变得重要,例如滚动重启,部署失败时没有出现任何问题,等等.Mongrel,Thin,Unicorn,Phusion Passenger,他们都在某种程度上暴露了这些功能,但有些需要比其他人更多的管理工作。例如,要在Mongrel和Thin中实现滚动重新启动,您需要在部署脚本中执行大量步骤。 Unicorn不需要那么多步骤,但仍然很重要。这就是Phusion Passenger Enterprise的亮点:它将所有这些功能转换为单个配置选项。打开选项,软件负责其余部分。

因此,选择您认为最适合您的方案的任何选项。

答案 1 :(得分:1)

最容易设置的产品可能是Apache和mod_rails(乘客)。如果你想使用新的热度,你可以给nginx和乘客一个旋转。

对于开发,杂种通常是最容易使用的。大多数Windows IDE(RadRails,Netbeans)允许您选择使用Webrick或Mongrel进行开发工作,并允许您从IDE本身控制服务器。

<强>更新

四种选择

实际上有四个选择,加上WEBrick,但这对于生产服务器来说是一个不寻常的选择。大约按复杂程度增加......

nginx + Mongrel nginx +乘客 Apache + Mongrel Apache + Passenger (有Phusion Passenger Standalone,但这真的是一个nginx +乘客编组在一起,所以我不算数,虽然对某些人来说这可能是一个不错的选择。)

然后,较大的站点可能会在服务器前添加专用的第7层硬件(NetScaler,F5,...)。

答案 2 :(得分:0)

薄的就像宝石“薄”一样容易开发和生产