dAr*_*nac 8 django high-load nginx gunicorn
我试图理解以下场景:
Gateway Timeout
在一段时间后响应我想工人的重新启动并没有真正发生,或者该机制被负载阻塞了?我想了解解决此问题的方法。
谁能解释这里发生了什么?非常感谢!
PS:我绑定使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
gunicorn(通过supervisord启动):
# gunicorn
python manage run_gunicorn --workers 4 --max-requests 1000 -b 127.0.0.1:8100 --timeout 1800
Run Code Online (Sandbox Code Playgroud)
不太确定这里可能存在什么问题。
但是,您可以尝试使用服务器挂钩进行调试,例如:
on_reload:在通过 SIGHUP 重新加载期间调用以回收工作线程。可调用对象需要接受仲裁器的单个实例变量。
def on_reload(server):
#Print some debug message
worker_int:在工作人员因 SIGINT 或 SIGQUIT 退出后立即调用。
def worker_int(worker):
#Print some debug message
pre_request:在工作进程处理请求之前调用。
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
归档时间: |
|
查看次数: |
9095 次 |
最近记录: |