由于应用服务器有这么多的选择(Passenger、Thin、Unicorn、Mongrel、Puma和Rainbows!),我想知道什么适合下面的场景:
Rails仅用于API后台(所有资产都由Nginx提供服务)。一些API调用依赖于其他API服务,所以有时它们需要一段时间才能完成。
响应式应用程序用于移动、平板电脑和桌面客户端,因此不能保证客户端的连接。
在这种情况下,您认为哪种应用服务器是合适的?在选择时应该考虑哪些因素?
发布于 2013-03-15 23:13:13
如果您的应用程序对其他服务进行API调用,那么Unicorn不是一个好的选择。Unicorn是一个单线程、多进程的应用服务器,专为快速、短时间运行的CPU工作负载而设计。进行HTTP API调用被视为长时间运行的阻塞I/O请求。这不是限制,而是Unicorn明确的设计选择。这一点得到了the Unicorn website“在某些情况下更糟糕”一节的证实。
理论上,Thin可以处理这样的高并发工作负载,因为它使用事件I/O。然而,这需要显式的框架和事件代码形式的应用程序支持。很少有框架和应用程序能做到这一点。Rails和Sinatra不需要。
因此,只剩下支持多线程的应用程序服务器。三个竞争者是彪马,彩虹和Phusion Passenger 4 Enterprise。
您可能还会对this writeup感兴趣,以了解更多信息。
发布于 2013-02-14 21:24:50
了解的一个真正的方法是在真实条件下测试和测量性能。其他的都是假设和猜测。
同时,您应该从您知道的足够好的服务器开始(独角兽似乎是一个相当流行和像样的选择),并在它成为瓶颈时处理服务器性能。
发布于 2013-02-15 07:13:51
根据您独立请求,我建议使用nginx反向代理后面的Puma或Unicorn服务器。对工作队列使用sidekiq。假设这是一个Rails应用程序,如果使用Sinatra,thin可能就足够好了。就像另一个人说的,先写稳定性,然后再测试性能。
https://stackoverflow.com/questions/14875345
复制相似问题