我虽然可以用webrick或mongrel部署它
解决方法
大多数
Ruby应用程序服务器只运行一个
Ruby进程(并且Ruby有一个全局解释器锁,使多线程毫无意义),这意味着它一次只能处理一个请求.至少可以说,这不会给你很好的表现.
有两种解决方法:要么运行多个Ruby应用程序服务器,要么在它们前面放置负载均衡器或反向代理,例如:在一组Mongrels或Thin服务器前面的Nginx或Apache(您运行的进程数反映了您将能够并行处理的请求数).或者运行Passenger,它是一个Apache或Nginx模块,用于管理可随负载变化而动态增长和缩小的应用程序池.第一个选项为您提供了更多配置选项,但第二个选项更易于管理.你想要哪一个取决于你的用例.
当然还有其他解决方案,但它们适用于更具体的用例.例如,您可以编写一个性能非常高的应用程序并使用Thin部署它 – 但它要求您编写一个事件驱动的应用程序.您无法部署Rails应用程序并期望获得相同的性能.