Як усунути помилку тайм-аута тайм-аут працівника?


26

Я використовував nginx та 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


1
Чи можете ви надати більше інформації, будь ласка? Командний рядок, який ви використовуєте для запуску Gunicorn, був би гарним початком.
supervacuo

Простежте за працівником, щоб побачити, де він застряє:strace -p <PID> -e trace=network -t
Aryeh Leib Taurog

Яку програму ви запускаєте? Ви можете збільшити час очікування за замовчуванням.
Бурхан Халід

Так, Бурхан Халід, зараз я збільшив proxy_read_timeout до 1200 у nginx та timeout до 3600 у налаштуваннях guicorn. Сподіваюся, що це працює
см

@sm - це спрацювало?
iamkhush

Відповіді:


29

Щоб виправити це збільшення прапор часу очікування в Nginx,

У збільшенні Nginx proxy_connect_timeoutі proxy_read_timeoutви можете додати наступне у файл nginx.conf відповідно до httpдирективи. Вони за замовчуванням до 60-х.

proxy_connect_timeout 300s;

proxy_read_timeout 300s;

Перезавантажте сервер Nginx. Дивіться документи nginx про час очікування .

Якщо вище виправлення не працює, збільште прапор часу очікування Gunicorn у конфігурації Gunicorn, типовий час очікування Gunicorn - 30 секунд.

- timeout 90

Документація гунікорна про час очікування

-t INT, --timeout INT 30 Робітники мовчать більше, ніж багато секунд, гинуть і перезапускаються.

Зазвичай встановлюється на тридцять секунд. Встановіть це помітно вище, якщо ви впевнені в наслідках для працівників синхронізації. Для працівників, які не синхронізуються, це просто означає, що робочий процес все ще спілкується і не прив’язаний до тривалості часу, необхідного для обробки одного запиту.

Документи гунікорна на час очікування робочих

Сподіваюся, це вирішує це.


2
Це рішення врятувало мені життя після того, як я шукав рішення цілий день. Якщо у вас справді є процес, який триває довше 30-х років (що було моєю проблемою), то це, безумовно, правильне рішення.
Алекс П. Міллер

Так, навіть у нас є сценарій, який триває довше 30 секунд, тому ми прийняли рішення. Приємно, що це допомогло.
sreekanth

У нас такого сценарію немає. На майданчику є мінімальний рух, але робочий час очікує кожного дня майже в один і той же час. Потім біжить через 1-2 хвилини. Моя установка: nginx - керівник - gunicorn - django. У мене тайм-аут 120 сек.
iamkhush

proxy_connect_timeout: "Визначає час очікування встановлення з'єднання з проксі-сервером. Слід зазначити, що цей час очікування не може перевищувати 75 секунд ."
deweydb

@iamkhush, чи вдалося вияснити виправлення цього? Я також стикаюся з цим питанням, навіть коли моя заявка не працює. Щоденний тайм-аут працівників «Гунікорна», і жодне з таких рішень, як збільшення тайм-ауту, здається, не працює.
Анкіт Джайсваль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.