微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

解决方法

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

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

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

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

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

原文地址:https://www.jb51.cc/html/230067.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐