Я использовал nginx и gunicorn для размещения своего сайта на двух серверах,
Оба сервера имеют одинаковые версии пакетов, и веб-сайт успешно размещен,
Но на одном из моих серверов Gunicorn всегда получает тайм-аут, и я получаю ошибку
[CRITICAL]Worker Timeout
Booting worker with pid
Worker cannot boot with pid
И после этого я получаю ошибку 502 Badgateway на веб-странице. Мне нужно перезапустить процесс стрельбы, чтобы открыть веб-сайт.
Ниже приводится журнал ошибок:
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [22140] [INFO] Booting worker with pid: 22140
И я получаю такую ошибку:
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:57 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
И снова рабочий запускается,
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [22276] [INFO] Booting worker with pid: 22276
Снова игнорирую ошибку EPIPE, и это продолжается до тех пор, пока я не перезапущу пулемет. И когда я получаю эту ошибку, я получаю ошибку шлюза 504 от nginx
Чтобы исправить это, увеличьте флаг тайм-аута в Nginx,
В Nginx увеличение proxy_connect_timeout
и proxy_read_timeout
, вы можете добавить следующее в файл nginx.conf под http
директива. По умолчанию они равны 60-м.
proxy_connect_timeout 300 с;
proxy_read_timeout 300 с;
Перезагрузите сервер Nginx. Видеть Документы nginx по таймаутам.
Если вышеуказанное исправление не работает, увеличьте флаг тайм-аута Gunicorn в конфигурации Gunicorn, таймаут Gunicorn по умолчанию составляет 30 секунд.
- тайм-аут 90
Документация Gunicorn о тайм-ауте
-t INT, --timeout INT 30 Рабочие, молчащие дольше указанного количества секунд, будут убиты и перезапущены.
Обычно устанавливается на тридцать секунд. Устанавливайте это значение заметно выше, только если вы уверены в последствиях для синхронизаторов. Для рабочих без синхронизации это просто означает, что рабочий процесс все еще обменивается данными и не привязан к продолжительности времени, необходимому для обработки одного запроса.
Документы Gunicorn о тайм-аутах рабочих
Надеюсь, это решит проблему.