gpt4 book ai didi

django - 高负载时具有最大请求限制 block 的 Gunicorn

转载 作者:行者123 更新时间:2023-12-01 06:09:27 25 4
gpt4 key购买 nike

我试图了解以下情况:

  • 我有一个前面有 nginx 的网站(使用 SSL,配置见下文)
  • 对 Django 应用程序的请求由 gunicorn 处理(0.18,配置见下文,由 supervisord 管理)
  • 当用户加载网站时,gunicorn 处理了 10 个请求(其他请求是 nginx 提供的静态文件) - 这些请求不是长时间运行的请求
  • gunicorn 配置为使用maximum of 1000 requests每个 worker ,直到 worker 重生
  • 大约 450 人能够在短时间内(1-2 分钟)加载页面
  • 之后 gunicorn 以某种方式阻塞并且不再处理任何连接,结果是 nginx 以 Gateway Timeout 响应过了一会儿

  • 我想 worker 的重新启动并没有真正发生,或者机制被负载阻塞了?我想了解解决此问题的过程。

    谁能解释这里发生了什么?非常感谢!

    PS:我绑定(bind)使用gunicorn 18.0,目前无法使用较新的版本。

    这是我使用的配置。

    nginx:
    # nginx
    upstream gunicorn_app {
    server 127.0.0.1:8100;
    }
    server {
    listen 443 ssl;
    ...
    # skipping static files config
    ...
    location @proxy_gunicorn_app {
    proxy_read_timeout 1800;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://gunicorn_app;
    }
    }

    gunicorn(通过 supervisord 启动):
    # gunicorn
    python manage run_gunicorn --workers 4 --max-requests 1000 -b 127.0.0.1:8100 --timeout 1800

    最佳答案

    不太确定这里可能是什么问题。

    但是,您可以尝试使用服务器 Hook 进行调试,例如:

  • on_reload :通过 SIGHUP 在重新加载期间调用以回收工作人员。可调用对象需要接受仲裁器的单个实例变量。
    def on_reload(server):
    #Print some debug message
  • worker_int :在工作人员退出 SIGINT 或 SIGQUIT 后立即调用。
    def worker_int(worker):
    #Print some debug message
  • 预请求 :在工作人员处理请求之前调用。
    def pre_request(worker, req):
    #Print some debug message
    #worker.log.debug("%s %s" % (req.method, req.path))
  • post_request :在工作人员处理请求后调用。
    def post_request(worker, req, environ, resp):
    #Print some debug message

  • 这可能会帮助您找到问题的根源。

    gunicorn 文档中的引用资料:
    http://docs.gunicorn.org/en/stable/settings.html#server-hooks

    关于django - 高负载时具有最大请求限制 block 的 Gunicorn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34306333/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com