Случайные 502 ошибки от Gunicorn под большой нагрузкой - PullRequest
0 голосов
/ 28 марта 2019

Мое приложение Django 1.8 с nginx и gunicorn на двухпроцессорном компьютере Debian с 21 ГБ памяти и 128 ГБ памяти.База данных находится на отдельном сервере.

В большинстве случаев это работает нормально, но я получаю множество случайных 502 ошибок при высоких нагрузках, когда серверу необходимо обработать примерно больше, чем 60 req/sec, изагрузка сервера превышает 20.

Вот мой текущий конфиг Gunicorn:

#!/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 показывает много:

[2019-03-28 01:30:27 +0000] [11457] [CRITICAL] WORKER TIMEOUT (pid:13481)
[2019-03-28 01:30:27 +0000] [11457] [CRITICAL] WORKER TIMEOUT

В то жевремя, база данных базы данных (которая находится на другом сервере, довольно крутая и никогда не достигает max_connections. Так что не похоже, что проблема заключается в отсутствии соединений с БД для обработки запросов http.

Я пробовал многоразличные комбинации REQ_TIMEOUT (от 30-120) NUM_WORKERS (от 21 до 49)) и MAX_REQ (от 200 до 220000), но ни одна из них не смогла решить проблему.Так что цените ваши советы о том, как справиться с этой проблемой.

...