在具有128GB Ram的双21处理器Debian机器上,我的带有nginx和gunicorn的Django 1.8应用程序。该数据库位于单独的服务器上。
这在大多数情况下都可以正常工作,但是当服务器需要处理的负载超过502
且服务器负载超过{{ 1}}。
这是我当前的Gunicorn配置:
60 req/sec
20
显示很多:
#!/bin/bash
NAME="myapp"
SOCKFILE=/tmp/gunicorn.sock
USER=me
GROUP=www-data
NUM_WORKERS=49
DJANGO_SETTINGS_MODULE=myapp.settings
DJANGO_WSGI_MODULE=myapp.wsgi
MAX_REQ=220000
REQ_TIMEOUT=30
LOG_FILE=/var/log/gunicorn/error.log
echo "Starting $NAME as `whoami`"
cd $DJANGODIR
source /path/to/.myappenv/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
themselves (do not use --daemon)
exec /path/to/.myappenv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=error \
--log-file $LOG_FILE \
--max-requests=$MAX_REQ \
--timeout=$REQ_TIMEOUT
同时,数据库后端(位于另一台服务器上的数据库非常酷,并且从未到达/var/log/gunicorn/error.log
。因此,似乎问题不在于缺少用于处理http请求的数据库连接。>
我尝试了[2019-03-28 01:30:27 +0000] [11457] [CRITICAL] WORKER TIMEOUT (pid:13481)
[2019-03-28 01:30:27 +0000] [11457] [CRITICAL] WORKER TIMEOUT
(从30-120到max_connections
(从21到49)和REQ_TIMEOUT
(从200到220000)的许多不同组合,但是没有一个可以解决问题。因此,感谢您对如何处理此问题的提示。