Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Nginx Gunicorn=504超时_Python_Django_Nginx_Gunicorn - Fatal编程技术网

Python Django Nginx Gunicorn=504超时

Python Django Nginx Gunicorn=504超时,python,django,nginx,gunicorn,Python,Django,Nginx,Gunicorn,我正在尝试使用Nginx+Gunicorn在生产服务器上发布Django应用程序。当我在服务器上进行简单的压力测试(按住F5键一分钟)时,服务器返回504网关超时错误。为什么会发生这种情况?此错误仅在用户执行多个并发请求时出现,否则系统将对所有人完全不可用?当您按住F5时: 您已经启动了数百个请求 这些请求已填满您的gunicorn请求队列 请求处理程序没有在连接断开时立即被剔除 您的最新请求被卡在所有以前请求后面的队列中 Nginx超时 对每个人来说 解决方案: 在Nginx中设置限制速

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

当您按住F5时:

  • 您已经启动了数百个请求
  • 这些请求已填满您的gunicorn请求队列
  • 请求处理程序没有在连接断开时立即被剔除
  • 您的最新请求被卡在所有以前请求后面的队列中
  • Nginx超时
  • 对每个人来说
解决方案:

  • 在Nginx中设置限制速率的bucket,键入IP,这样一个恶意用户就不能向您发送垃圾邮件请求并拒绝您的站点
  • 在Nginx中设置一个全局速率限制bucket,这样您就不会过度填充请求队列
  • 让Nginx提供一个漂亮的“Reddit正在重载”样式的页面,这样用户就知道这是一个有目的的事件
或:

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

504可能是由gunicorn超时引起的。您需要使用
--timeout
arg like启动它

gunicorn --access-logfile - --workers 3 --timeout 300  --bind unix:/home/ubuntu/myproject/myproject.sock myproject.wsgi:application