Answers:
我将专注于缓慢的客户端行为以及您的配置如何处理它,但是不要试图相信这是唯一的好处。使慢速客户端受益的相同方法也对快速客户端,SSL处理,处理流量激增以及在Internet上提供HTTP服务的其他方面也具有益处。
Gunicorn是预分叉软件。对于低延迟通信,例如到应用程序服务器的负载平衡器或服务之间的通信,前叉系统可能会非常成功。扩展处理请求的过程是没有成本的,并且可以将单个过程专用于处理单个请求;消除这些问题可以导致整体上更快,更高效的系统,直到同时连接的数量超过了处理它们的可用进程的数量。
在您的情况下,您正在通过Internet处理高延迟的客户端。这些缓慢的客户端可以占用相同的进程。当QPS很重要时,应用程序代码需要尽快接收,处理和解决该请求,以便可以继续处理其他请求。当速度较慢的客户端直接与您的系统通信时,他们会束缚该过程并降低其速度。现在,除了尽快处理和处理请求之外,该过程还必须等待缓慢的客户端。有效QPS下降。
Nginx等异步服务器擅长以很少的cpu和内存成本处理大量连接。缓慢的客户端不会以相同的负面方式影响它们,因为它们善于同时处理大量客户端。以Nginx为例,在现代硬件上运行,它可以一次处理成千上万的连接。
Nginx在分叉服务器之前是一个很好的组合。Nginx处理与客户端的通信,并且不会因处理速度较慢的客户端而受到惩罚。它以后端能够处理这些请求的速度将请求发送到后端,从而使后端能够尽可能高效地利用服务器资源。后端一计算出结果就返回结果,Nginx缓冲该响应以按照自己的速度将其反馈给速度较慢的客户端。同时,即使速度较慢的客户端仍在接收结果,后端也可以继续处理另一个请求。