首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为API后端选择应用程序服务器

为API后端选择应用程序服务器
EN

Stack Overflow用户
提问于 2013-02-14 20:55:45
回答 3查看 2.9K关注 0票数 6

由于应用服务器有这么多的选择(Passenger、Thin、Unicorn、Mongrel、Puma和Rainbows!),我想知道什么适合下面的场景:

Rails仅用于API后台(所有资产都由Nginx提供服务)。一些API调用依赖于其他API服务,所以有时它们需要一段时间才能完成。

响应式应用程序用于移动、平板电脑和桌面客户端,因此不能保证客户端的连接。

在这种情况下,您认为哪种应用服务器是合适的?在选择时应该考虑哪些因素?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

  • 彪马是相对较新的。彩虹稍微老了一点,但作者不能保证它是否工作良好。Phusion Passenger已经成熟,已经存在多年,目前被超过150000个网站使用,包括皮克斯,纽约时报,AirBnB等大型网站。
  • 彪马和彩虹的使用模型类似于独角兽和瘦,因为您启动了一系列进程,并通过反向代理配置将它们连接到Nginx。另一方面,Phusion Passenger则被设计为直接集成到Nginx中,因此它需要的配置、进程管理和其他管理工作要少得多。overhead.
  • Phusion Passenger 4企业版不是严格意义上的多线程服务器,而是一个混合的多进程/多线程服务器。这意味着它可以运行多个进程(为了提高稳定性和使用多个CPU核心的能力),每个进程都有多个线程(对于高I/O concurrency).
  • Phusion Passenger 4企业带过来的many advantages具有比Puma和彩虹更多的功能:例如,它具有带外垃圾收集,可以根据流量动态调整进程的数量,完全自动化滚动重启,因此您不需要脚本,等等。

您可能还会对this writeup感兴趣,以了解更多信息。

票数 13
EN

Stack Overflow用户

发布于 2013-02-14 21:24:50

了解的一个真正的方法是在真实条件下测试和测量性能。其他的都是假设和猜测。

同时,您应该从您知道的足够好的服务器开始(独角兽似乎是一个相当流行和像样的选择),并在它成为瓶颈时处理服务器性能。

票数 3
EN

Stack Overflow用户

发布于 2013-02-15 07:13:51

根据您独立请求,我建议使用nginx反向代理后面的Puma或Unicorn服务器。对工作队列使用sidekiq。假设这是一个Rails应用程序,如果使用Sinatra,thin可能就足够好了。就像另一个人说的,先写稳定性,然后再测试性能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14875345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档