web-server – 为什么将Nginx设置为反向代理是一个好主意?

我有一个在Gunicorn上运行的Django站点,通过Nginx使用反向代理.
难道Nginx不是一个额外的不必要的开销吗?
如何在Gunicorn上添加帮助?

解决方法

我将专注于缓慢的客户端行为,以及您的配置如何处理它,但不要试图相信这是唯一的好处.同样有利于慢客户端的方法也有利于快速客户端,SSL处理,处理流量激增以及在Internet上提供HTTP服务的其他方面.

Gunicorn是预售软件.对于低延迟通信,例如负载均衡器到应用服务器或服务之间的通信,预分叉系统可以非常成功.启动流程来处理请求没有任何成本,单个流程可专用于处理单个请求;消除这些因素可以导致整体更快,更有效的系统,直到同时连接数超过处理它们的可用进程数.

在您的情况下,您正在通过互联网处理高延迟客户端.这些慢速客户端可以占用相同的进程.当QPS很重要时,应用程序代码需要尽快接收,处理和解决请求,以便它可以转移到另一个请求.当慢速客户端直接与您的系统通信时,它们会占用该进程并降低速度.而不是尽快处理和处理请求,该过程现在还必须等待慢速客户端.有效的QPS下降.

以非常小的cpu和内存成本处理大量连接是Nginx等异步服务器所擅长的.慢客户端不会以相同的负面方式影响它们,因为它们擅长同时处理大量客户端.在Nginx的情况下,在现代硬件上运行它可以同时处理数万个连接.

在预分叉服务器前面的Nginx一个很好的组合. Nginx处理与客户端的通信,并且不会因处理慢速客户端而受到惩罚.它以后端可以处理这些请求的速度向后端发送请求,使后端尽可能高效地利用服务器资源.后端在计算结果后立即返回结果,并且Nginx缓冲该响应以将其反馈以按照自己的节奏减慢客户端.同时,即使慢速客户端仍在接收结果,后端也可以继续处理另一个请求.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些