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