不用nginx用unicorn不好吗?为什么?
Is it bad to use unicorn without nginx? why?
我读到 unicorn 提供静态内容的速度很快,用户速度慢,进行重定向。
为什么 nginx+unicorn 与仅 运行 unicorn 相比更好,并在需要时扩展 unicorn worker 的数量?
您是否有任何数字显示 nginx 在这些事情(重定向、代理、提供静态内容)上的速度有多快?
As Heroku DevCenter claims, Unicorn workers 容易受到慢客户端的攻击.
每个工作人员只能处理一个请求,并且如果客户端还没有准备好接受整个答案(又名"slow client"),Unicorn worker 在发出响应 时被阻塞,无法处理下一个响应。由于每个 Unicorn worker 占用了大量的 RAM(again, see Heroku,它声称在 512 MiB RAM 下处理 2-4 个进程),你不能依赖于 worker 的数量,因为它是关于可以通过假装连接速度较慢使您的应用程序无法运行的客户端数量。
在 nginx 后面时,Unicorn 能够将整个答案转储到 nginx 的缓冲区中并立即切换到处理下一个请求。
也就是说,nginx后面一个独角兽worker,比直接暴露一堆独角兽worker靠谱多了
注意:对于那些使用古代红宝石的人:如果你要使用一组独角兽工人,请考虑至少迁移到 Ruby 2.0 以通过共享来减少 RAM 消耗跨分叉进程的公共数据 (ref).
我读到 unicorn 提供静态内容的速度很快,用户速度慢,进行重定向。
为什么 nginx+unicorn 与仅 运行 unicorn 相比更好,并在需要时扩展 unicorn worker 的数量?
您是否有任何数字显示 nginx 在这些事情(重定向、代理、提供静态内容)上的速度有多快?
As Heroku DevCenter claims, Unicorn workers 容易受到慢客户端的攻击.
每个工作人员只能处理一个请求,并且如果客户端还没有准备好接受整个答案(又名"slow client"),Unicorn worker 在发出响应 时被阻塞,无法处理下一个响应。由于每个 Unicorn worker 占用了大量的 RAM(again, see Heroku,它声称在 512 MiB RAM 下处理 2-4 个进程),你不能依赖于 worker 的数量,因为它是关于可以通过假装连接速度较慢使您的应用程序无法运行的客户端数量。
在 nginx 后面时,Unicorn 能够将整个答案转储到 nginx 的缓冲区中并立即切换到处理下一个请求。
也就是说,nginx后面一个独角兽worker,比直接暴露一堆独角兽worker靠谱多了
注意:对于那些使用古代红宝石的人:如果你要使用一组独角兽工人,请考虑至少迁移到 Ruby 2.0 以通过共享来减少 RAM 消耗跨分叉进程的公共数据 (ref).