与 Mongrel 集群相比,使用乘客有啥优势?

Posted

技术标签:

【中文标题】与 Mongrel 集群相比,使用乘客有啥优势?【英文标题】:What are the advantages of using Passenger over a Mongrel Cluster?与 Mongrel 集群相比,使用乘客有什么优势? 【发布时间】:2011-04-01 18:18:02 【问题描述】:

这可能是今天最愚蠢的问题,但是......

Rails 团队和许多其他人建议使用乘客而不是杂种集群,但我无法找到一个明确的清单,列出其确切的好处/优势或潜在的陷阱是什么。只是想知道是否有人可以帮助解释这一点?

passenger 是自己的服务器还是在后台使用 mongrel?

谢谢!

【问题讨论】:

【参考方案1】:

在Passenger 之前,Mongrel 是要走的路,但是要保持适当的调优,Mongrel 集群可能会令人讨厌。随着您的应用程序变得越来越复杂,每个 Mongrel 实例的内存占用量都会扩大,这会占用可用的磁盘缓存并降低性能,因此您必须密切注意部署中的内存分配平衡。有时您必须对其进行调整以添加或删除 Mongrel。

另一个缺点是您需要使用诸如monit 之类的某种启动器来管理这些 Mongrel 进程,而这些可能会很繁琐和困难。 Mongrel 没有自带进程管理器。

另一个严重的问题是每个 Mongrel 都被锁定到一个特定的应用程序,并且在一个应用程序和另一个应用程序之间转移负载非常难以管理。

Mongrel 还依赖于您必须自己配置的外部负载均衡器。

Passenger 将处理启动所有 Rails 引擎进程,并将尽最大努力有效地分配内存。如果您有许多优先级相互冲突的站点,Passenger 会很好地按需启动服务器,并在不使用时将其删除。

Passenger 通过查找tmp/restart.txt 触发器文件也可以非常快速地重新启动应用程序的所有实例。您不必终止任何进程或等待重新启动。

在后台,Passenger 使用自己的启动器和调度系统。尽管在功能上它与 Mongrel 相似,但 Phusion 引入了许多显着的性能改进,使Passenger 的内存效率显着高于 Mongrel。

Passenger 是一个完整的软件包,可以正常工作并且非常容易管理。 Mongrel 只是一个非常基本的 Web 服务器。

【讨论】:

很好的比较,tadman!对杂种有什么好处,对乘客有什么坏处吗? Mongrel 更容易启动以进行快速测试(脚本/服务器),并且在长时间不活动后,Passenger 需要一两秒来“热身”,尽管您通常不会注意到。 Passenger 与 Apache 和 nginx 完全集成,效果更好。

以上是关于与 Mongrel 集群相比,使用乘客有啥优势?的主要内容,如果未能解决你的问题,请参考以下文章

与 ngResource 相比,使用 Restangular 有啥优势?

与 setState 回调相比,使用 componentDidUpdate 有啥优势?

与 String 相比,在 Ruby 中使用 StringIO 有啥优势?

与传统的多态处理相比,使用 std::variant 有啥优势?

与直接存储日期相比,使用日期维度表有啥优势?

与 numpy.eye 相比,使用 numpy.identity 有啥优势?