我读到,独角兽可以快速提供静态内容,减慢用户速度,重定向。
为什么更好的nginx + unicorn只运行独角兽,并在需要时扩展独角兽工人的数量?
你有没有数字显示nginx对这些事情的快速程度(重定向,代理,提供静态内容)?
答案 0 :(得分:6)
As Heroku DevCenter claims, Unicorn工作人员容易受到慢客户的攻击。
每个工作人员只能处理单个请求,如果客户端未准备好接受整个答案(又名“慢客户端”), Unicorn工作人员被阻止< / strong>发送响应并且无法处理下一个。由于每个Unicorn工作人员占用了大量的RAM (again, see Heroku,它声称在512 MiB RAM处理2-4个进程),你不能依赖于工人的数量,因为它是关于假装连接速度慢的使您的应用程序无法运行的客户端数量。
当在 nginx 之后时,Unicorn能够将整个答案转储到nginx的缓冲区并立即切换到处理下一个请求。
也就是说, nginx 背后有一名独角兽工人比直接暴露的一群独角兽工人更可靠。
注意:对于那些使用古代红宝石的人来说:如果您将使用一组Unicorn工作者,请考虑通过在分叉进程之间共享公共数据来迁移到至少Ruby 2.0以减少RAM消耗({{ 3}})。