薄VS独角兽在Heroku(Thin vs Unicorn on Heroku)

2019-07-17 11:33发布

只是想获得使用麒麟VS细如导轨服务器市民的意见。 大部分文章/基准我在网上找到的似乎非常不完整,所以它有一个好的集中的地方进行讨论。

宇宙大帝是一个多处理服务器,而薄是基于/非阻塞服务器的事件。 基于事件的服务器是伟大的...如果你的代码是异步/非阻塞 - 香草轨道阻止。 所以,除非你使用非阻塞轨库,我实在看不出使用薄的优势。 更糟的是,在无阻塞的服务器,如果你的I / O环阻止你要阻止整个循环,不能够处理更多的请求,直到阻塞调用返回。 阻断库要慢瘦不下来!

根本的Heroku为什么选择薄作为其默认服务器(雪松)? 他们是聪明的家伙,所以我敢肯定,他们有一个理由。

贝娄是,建议更换细跟4名独角兽工人的链接 - 这使我感觉良好。 在Heroku 4名宇宙大帝工人

Answer 1:

瘦很容易配置 - 不是最佳的,但它只是工作在Heroku的环境。

独角兽可以更有效率,但它需要进行配置:有多少工人? 预加载应用程序? 你怎么挑?

我已经发布了与设置为3,5和8个工人独角兽Heroku的应用程序 - 只是基于每个应用程序有多大 - 多大码的,多少内存使用和多少流量你得到所有进入采摘这个数字,你需要监视一段时间,以确保你有多少权利,而你的应用程序并不运行内存。

预紧假 - 这会让你的应用程序启动速度较慢,但​​是当独角兽重新启动工人,这与网络连接(内存缓存,Postgres的,蒙戈等),“更安全”

预紧真实的 - 这是更好的,但是你需要在前置和后置叉代码正确处理服务器重新连接。

薄没有这些问题,开箱即用,但你只能得到执行的过程。

总结:这真的很难开箱配置麒麟好(或全部)工作的每一个人,而薄可以只是工作,让人们用更少的支持请求运行。



Answer 2:

最近(仅在几个月前)背后的人的Phusion乘客到Heroku的添加支持。 当然这是你应该尝试,看看是否适合您的需要的替代品。

甚至有1条赛道和响应时间的下降速度极快是显而易见的。 一个简单的客运Ruby的Heroku的演示托管在GitHub上。

主要的好处,在Heroku索赔乘客有:

  • 通过Nginx的静态资产加速 -不要让你的Ruby应用服务静态资产,让Nginx的为你做它和卸载您的应用真正重要的任务。 Nginx的会做一个更好的工作。

  • 多个工作进程 -而不是在测功机上运行只有一个工人,乘客的Phusion上运行一个单一的赛道多工作,因此需要利用它的资源发挥到极致,给你更高的性价比。 这种方法类似于独角兽的。 但是,与独角兽的Phusion客运动态调整基于当前交通工作进程的数量,从而腾出资源时,他们没有必要的。

  • 内存优化 -的Phusion乘客使用比瘦和独角兽更少的内存。 它还支持在关于Ruby 2.0运行的代码预紧组合写入时复制的虚拟内存,从而使您的应用程序使用更少的内存。

  • 请求/响应缓冲 -所包含的Nginx的缓存请求和响应,从而保护您的应用程序对慢客户端(如移动网络的移动设备),并提高了性能。

  • 出带外的垃圾收集 - Ruby的垃圾收集器是缓慢的,但为什么有较长的响应时间打扰你的访客? 通过运行正常的请求 - 响应周期之外的垃圾收集解决这个问题! 这个概念,最早由麒麟介绍,进行了改进后:的Phusion客运确保只有一个在同一时间要求紧迫的带外的垃圾收集,从而消除所有不带独角兽的垃圾回收有问题。

  • JRuby支持 -独角兽的比薄更好的选择,但它不支持JRuby的。 客运的Phusion做。

希望这可以帮助。



Answer 3:

Heroku的不使用智能路由 - 它会随机分配工作不管赛道是否是忙不过来DYNOS。 因此,如果你的测功机不能立即处理多个任务,你会得到延迟(也许是巨大的延迟),即使你付出很多是免费的其他DYNOS的。 “这是正确的-如果你的应用程序需要与智能路由器80个DYNOS,它需要4,000随机路由器。” http://news.rapgenius.com/James-somers-herokus-ugly-secret-lyrics

Heroku的说,他们这方面的工作,以及他们的计划是,使之更容易使用独角兽。 他们基本上说:“哎呀,我们没有注意到,这是几年的问题...现在我们看,这绝对是薄的问题......所以我想你需要使用比不同的程序一个我们一直在推动这一切的时候“。 http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics

从Heroku的官方解释(上面第二个链接):“Rails的,其实还不可靠支持的并发请求处理这让Rails开发者无法利用由雪松堆栈提供了额外的并发能力,除非他们移动到并发Web服务器像彪马和独角兽。

Rails的部署雪松与薄能够相当快地与请求排队问题的最终应用。 由于雪松路由器不再做代表应用程序的任何排队,排队的请求在测功机必须等到单Rails的过程中,通过队列的工作方式。 许多客户都遇到了这个问题,我们没有采取行动,并为他们提供一个更好的方法对雪松部署Rails应用。”

同样感兴趣的是,他们的表现工具,包括New Relic的,没有被报道在测功机队列中花费的时间。 http://news.rapgenius.com/Lemon-money-trees-rap-genius-response-to-heroku-lyrics

哎呀。



文章来源: Thin vs Unicorn on Heroku