没有nginx使用独角兽是不是很糟糕?为什么?

jua*_*tas 4 ruby-on-rails nginx unicorn

我读到,独角兽可以快速提供静态内容,减慢用户速度,重定向.

为什么更好的nginx + unicorn只运行独角兽,并在需要时扩展独角兽工人的数量?

你有没有数字显示nginx在这些事情上的速度有多快(重定向,代理,提供静态内容)?

D-s*_*ide 7

正如Heroku DevCenter所说,Unicorn工作人员容易受到缓慢客户的攻击.

每个工作人员只能处理单个请求,如果客户端尚未准备好接受整个答案(也称为"慢速客户端"),则Unicorn工作人员在发送响应时被阻止,无法处理下一个响应.由于每个Unicorn工作人员占用了大量的RAM(再次看到Heroku,它声称在512 MiB RAM处理2-4个进程),你不能依赖于工作人员的数量,因为它是关于可以渲染你的数量的客户端数量假装连接速度慢,无法运行应用程序.

nginx落后时,Unicorn能够将整个答案转储到nginx的缓冲区并立即切换到处理下一个请求.

也就是说,拥有一名Unicorn工作人员的nginx比直接暴露的一群Unicorn工作人员更可靠.

注意:对于那些使用古代Rubies的人来说:如果你将使用一组Unicorn工作者,考虑通过在分叉进程(ref)之间共享公共数据来迁移到至少Ruby 2.0以减少RAM消耗.