我一直在尝试和评估其他替代Rails默认WEBrick服务器的选项,Thin是最轻松和干净的选择,非常好用!
这些服务器中的哪一个——Mongrel、Thin、WEBrick和Passenger——您会推荐使用?为什么呢?是否有任何可扩展性优势(集群友好或可以处理某种规模的配置),这些服务器是否应该考虑可扩展性作为评估参数?
我一直在尝试和评估其他替代Rails默认WEBrick服务器的选项,Thin是最轻松和干净的选择,非常好用!
这些服务器中的哪一个——Mongrel、Thin、WEBrick和Passenger——您会推荐使用?为什么呢?是否有任何可扩展性优势(集群友好或可以处理某种规模的配置),这些服务器是否应该考虑可扩展性作为评估参数?
谈到可扩展性时,它们之间没有太大的区别。它们在生产环境中表现非常相似,它们的扩展方式也大致相同,你遇到的任何问题很可能是由你的应用程序或Rails引起的,除了WEBrick,你真的不应该在生产中使用它。你可能会在hello world基准测试中看到差异,但那只是一点点。在生产环境中,大部分时间都会花费在应用程序上,因此在hello world基准测试中可见的微小速度差异将变得完全不可见。
但是需要注意一些微妙之处。
I/O模型可能重要也可能不重要,这取决于应用程序的性质。Mongrel、Thin、Unicorn都是多进程单线程的。这对于传统的Web应用程序非常有效,它们在本地数据库中查找内容并呈现结果,但对于执行大量HTTP API调用或其他需要等待I/O的应用程序来说,效果很差。为什么Rails 4直播流是一个大问题详细解释了这一点。
Phusion Passenger也是多进程单线程的,但Phusion Passenger Enterprise支持多线程。Phusion Passenger Enterprise是开源Phusion Passenger的商业变体,具有许多对大型生产环境有用的功能。
因此,请选择您认为最适合您情况的选项。
在生产环境中,最容易设置的可能是Apache和mod_rails(passenger)。如果你想使用新技术,可以尝试一下nginx和passenger。
对于开发来说,Mongrel通常是最容易使用的。大多数Windows IDE(RadRails、Netbeans)都可以选择使用Webrick或Mongrel进行开发工作,并允许您从IDE本身控制服务器。
更新
四个选择
实际上有四个选择,当然还有WEBrick,但这对于生产服务器来说可能是一个不寻常的选择。按照逐渐增加的复杂性顺序排列...
nginx + Mongrel nginx + Passenger Apache + Mongrel Apache + Passenger (有Phusion Passenger Standalone,但那实际上是一个编译在一起的nginx + passenger,所以我不算它,虽然它可能是一些人的好选择。)
一个更大的网站可能会在服务器前面添加专门的第7层硬件(NetScaler、F5等)。
使用gem 'thin'可以轻松地在开发和生产环境中使用Thin