python - Django Nginx Gunicorn = 504 超时

标签 python django nginx gunicorn

我正在尝试使用 Nginx + Gunicorn 在生产服务器上发布 Django 应用程序。当我在服务器上进行简单的压力测试时(按住 F5 键一分钟),服务器返回了一个 504 Gateway Time-out 错误。为什么会这样?这个错误只有在用户做多个并发请求时才会出现,否则系统将对所有人完全不可用?

最佳答案

当您按住 F5 时:

  • 您已经发起了数百个请求。
  • 这些请求已填满您的 gunicorn 请求队列。
  • 请求处理程序不会在连接断开后立即被剔除。
  • 您最新的请求排在所有之前请求的队列中。
  • Nginx 超时。
  • 对每个人。

解决方案:

  • 在 Nginx 中设置速率限制桶,以 IP 为键,这样恶意用户就无法向您发送垃圾邮件请求和 DOS 您的网站。
  • 在 Nginx 中设置一个全局速率限制桶,这样您就不会填满您的请求队列。
  • 让 Nginx 提供一个漂亮的“Reddit 负载过重”风格的页面,让用户知道这是一个有目的的事件

或者:

用 uwsgi 替换 gunicorn。它速度更快,内存效率更高,与 nginx 顺利集成,最重要的是:如果连接断开,它将立即终止请求处理程序,这样 F5 垃圾邮件就无法终止您的服务器。

关于python - Django Nginx Gunicorn = 504 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20277537/

相关文章:

javascript - iPython/Jupyter 笔记本 : How to Embed Interactive Graph Using Desmos API?

python - apt-get purge 做了什么?

python - 从多语言 Unicode 文本中删除表情符号

python - 将 pdf 转换为图像时出现类型错误 : TypeError ("object of type ' NoneType' has no len()", )

python - 将 Ember CLI 与 Django 应用集成

google-chrome - NET::ERR_CERT_AUTHORITY_INVALID 在 Chrome 中不是隐身和 Firefox 在本地使用 nginx 上的有效证书

ruby-on-rails - Nginx Rails 错误

Windows 10 上的 Python 多处理

ssl - 在 Kubernetes 和 NGINX 中使用自签名证书设置 mTLS

python - 在 Web 应用程序中哪里存储颜色信息?