The*_*One 47 nginx web-server reverse-proxy django
我有一个在 Gunicorn 上运行的 Django 站点,通过 Nginx 使用反向代理。Nginx 不就是额外的不必要的开销吗?在 Gunicorn 之上添加它有什么帮助?
blu*_*ben 60
我将专注于缓慢的客户端行为,以及您的配置如何处理它,但不要相信这是唯一的好处。有利于慢速客户端的相同方法也有利于快速客户端、SSL 处理、处理流量激增以及在 Internet 上提供 HTTP 服务的其他方面。
Gunicorn 是预分叉软件。对于低延迟通信,例如负载均衡器到应用程序服务器或服务之间的通信,预分叉系统可能非常成功。启动一个进程来处理请求是没有成本的,一个进程可以专用于处理一个请求;消除这些事情可以导致整体更快、更高效的系统,直到同时连接的数量超过处理它们的可用进程数量。
在您的情况下,您正在处理 Internet 上的高延迟客户端。这些慢速客户端可能会占用相同的进程。当 QPS 很重要时,应用程序代码需要尽快接收、处理和解决请求,以便它可以转移到另一个请求。当慢速客户端直接与您的系统通信时,它们会阻塞该进程并减慢它的速度。该进程现在还必须等待慢速客户端,而不是尽快处理和处理请求。有效 QPS 下降。
以很少的 CPU 和内存成本处理大量连接是像 Nginx 这样的异步服务器所擅长的。它们不会受到慢客户端的负面影响,因为它们擅长同时处理大量客户端。就 Nginx 而言,在现代硬件上运行时,它可以同时处理数万个连接。
预分叉服务器前的 Nginx 是一个很好的组合。Nginx 处理与客户端的通信,并且不会因为处理慢客户端而受到惩罚。它以后端可以处理这些请求的速度向后端发送请求,从而使后端尽可能高效地使用服务器资源。后端在计算结果后立即返回结果,Nginx 缓冲该响应以按照自己的节奏将其提供给慢速客户端。同时,即使慢速客户端仍在接收结果,后端也可以继续处理另一个请求。
归档时间: |
|
查看次数: |
17798 次 |
最近记录: |