2010-12-06 61 views

回答

7

大多数Ruby应用程序服务器将只运行一个Ruby进程(并且Ruby有一个全局解释器锁,这使得多线程相当无意义),这意味着它一次只能提供一个请求。至少可以说,这不会给你很好的表现。

有两种解决方法:要么运行多个Ruby应用程序服务器,并在它们前面放置负载平衡器或反向代理,例如, Nginx或Apache在Mongrels或Thin服务器之前(您运行的进程数量反映了您可以并行处理的请求数量)。或者运行Passenger,它是一个Apache或Nginx模块,用于管理可随负载变化而动态增长和缩小的应用程序池。第一个选项为您提供了更多配置选项,但第二个选项更易于管理。你想要哪一个取决于你的用例。

当然还有其他解决方案,但它们适用于更具体的用例。例如,您可以编写一个非常高性能的应用程序并使用Thin进行部署 - 但它需要您编写一个事件驱动的应用程序。您无法部署Rails应用程序并期望获得相同的性能。

2

你可以在技术上,但你通常不想要,因为这会在提供像css或图像这样的静态文件时带来一点点的开销。

3

在Phusion Passenger允许使用Apache和nginx托管Rails的情况下,部署Rails应用程序非常可怕且困难。 Apache是​​一个非常成熟的Web服务器,可以轻松扩展并可配置以满足多种需求。 (nginx并不成熟,但效率非常高,也非常易于配置,是用于rails托管的Apache的一个很好的选择。)Webrick和Mongrel非常适合开发,但除非您是专家,否则很难将其设置为生产用途。

1

有许多方法可以在不涉及Apache的情况下部署Rails应用程序,但Apache是​​最流行的服务器,最稳定和可扩展的最成熟​​的服务器。 WEBrick和Mongrel都有各自的优点,但Apache仅仅是Web服务器的默认假设,并且在大多数情况下是阻力最小的路径。

相关问题