x7_*_*x7_ 10 ruby ruby-on-rails nginx unicorn
我对这个架构有点困惑.在我正在开发的其中一个项目中,Unicorn被选为Rails服务器.它被置于Nginx Web服务器之后.据我所知,Unicorn是功能齐全的Web服务器,我们不打算在同一服务器实例上托管任何其他Rails应用程序.
所以我的问题是:在链中增加一层有什么好处:
client -> nginx -> unicorn -> unicorn worker
Run Code Online (Sandbox Code Playgroud)
sbo*_*sje 17
Unicorn不是为处理"慢客户"而设计的.您可以在哲学帮助文件中阅读更多相关信息:
我们看到的大多数基准测试并没有告诉你这一点,而独角兽并不关心慢客户......但是你应该这样做.
"慢客户端"可以是数据中心之外的任何客户端.本地网络中的网络流量总是比跨越它的流量快.物理定律不允许这样做.
HTTP/1.1中引入了持久连接,减少了连接建立和TCP慢启动的延迟.当客户端空闲时,它们也会浪费服务器资源.
持久连接意味着独角兽工作进程之一(取决于您的应用程序,它可能非常耗费内存)将花费大量时间空闲保持连接活动而不做其他任何事情.作为单线程并使用阻塞I/O,工作者无法在保持连接活动的同时为其他客户端提供服务.因此,独角兽不会实现持久连接.
如果您的应用程序响应大于套接字缓冲区,或者您正在处理大型请求(上载),则工作进程也会受到客户端连接速度的瓶颈.您不应该允许独角兽为本地网络之外的客户提供服务.
归档时间: |
|
查看次数: |
1521 次 |
最近记录: |