首页 > 解决方案 > 带有 Nginx 和 Gunicorn 的 Django-App - 请求丢失?

问题描述

在我们公司,我们使用用 django 构建的时间跟踪系统。它与 Nginx 作为反向代理和 Gunicorn 一起部署以运行 python 代码。它基本上是一个简单的系统,一个按钮开始考勤,另一个按钮停止。有时用户声称他们按下了开始或停止,但系统没有处理它。我们现在正在确定我们的 Gunicorn 配置是否不适合我们的用例并且请求会丢失。

所以,我的问题是: 当 Nginx/Gunicorn 无法处理大量请求时,请求是否会丢失?

事实:

在这种情况下的任何帮助表示赞赏,如果您需要更多信息,请告诉我!

标签: djangonginxgunicorn

解决方案


感谢@SDRJ 的想法,我可以自己解决这个问题。

原始服务器规格

  • 具有 2 个 CPU 的虚拟机
  • Nginx 作为反向代理
  • Gunicorn 运行 3 个工人和每个工人 1 个线程

负载测试

尽管少量请求的平均运行时间为 0.05 秒,但负载测试表明服务器一次无法处理超过 200 个请求。这导致 Nginx 为进一步的请求发出“Bad Request 502”信号,这表明 Nginx 无法再访问 Gunicorn。

优化规格

将 gunicorn 的配置更改为:

  • 3 个工人,4 个线程

这导致了更好的性能。服务器一次能够轻松处理 4000 多个请求。

结论

当 Nginx/Gunicorn 无法处理请求数量时,请求是否会丢失?

是的。“丢失”可能是一个不利的描述,但可能会发生某些请求未得到处理的情况。


推荐阅读