在高负载下来自gunicorn的随机502错误

时间:2019-03-28 07:04:36

标签: django gunicorn

在具有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)的许多不同组合,但是没有一个可以解决问题。因此,感谢您对如何处理此问题的提示。

0 个答案:

没有答案