Làm thế nào để giải quyết lỗi hết thời gian chờ của nhân viên quan trọng?


26

Tôi đã sử dụng nginx và gunicorn để lưu trữ trang web của mình trong hai máy chủ,

Cả hai máy chủ đều có cùng phiên bản gói và trang web được lưu trữ thành công,

Nhưng trong một trong những gunicorn máy chủ của tôi luôn bị hết thời gian và tôi gặp lỗi

[CRITICAL]Worker Timeout
Booting worker with pid
Worker cannot boot with pid

Và sau này tôi nhận được lỗi 502 Badgateway trong trang web. Tôi phải khởi động lại quá trình gunicorn để đưa lên trang web.

Sau đây là nhật ký lỗi:

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

Và tôi nhận được lỗi continuos như thế này,

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

Và công nhân bắt đầu lại,

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

Một lần nữa Bỏ qua lỗi EPIPE và điều này tiếp tục cho đến khi tôi khởi động lại gunicorn. Và khi tôi gặp lỗi này, tôi nhận được 504 cổng lỗi từ nginx


1
Bạn có thể cung cấp thêm thông tin, xin vui lòng? Dòng lệnh bạn đang sử dụng để khởi chạy Gunicorn sẽ là một khởi đầu tốt.
supervacuo

Theo dõi công nhân để xem nó bị kẹt ở đâu:strace -p <PID> -e trace=network -t
Aryeh Leib Taurog

Ứng dụng bạn đang chạy là gì? Bạn có thể muốn tăng thời gian chờ mặc định.
Burhan Khalid

Có Burhan Khalid, hiện tại tôi đã tăng proxy_read_timeout lên 1200 trong nginx và thời gian chờ lên 3600 trong cấu hình gunicorn. Hy vọng điều này hoạt động
sm

@sm - Nó có hoạt động không?
iamkhush

Câu trả lời:


29

Để khắc phục điều này, hãy tăng cờ hết thời gian trong Nginx,

Trong Nginx tăng proxy_connect_timeoutproxy_read_timeout, bạn có thể thêm phần sau vào tệp nginx.conf theo httpchỉ thị. Họ mặc định là 60s.

proxy_connect_timeout 300s;

proxy_read_timeout 300s;

Khởi động lại máy chủ Nginx. Xem tài liệu nginx về thời gian chờ .

Nếu cách khắc phục ở trên không hoạt động, thì hãy tăng cờ hết thời gian Gunicorn trong cấu hình Gunicorn, thời gian chờ Gunicorn mặc định là 30 giây.

- hết giờ 90

Tài liệu Gunicorn về thời gian chờ

-t INT, - hết thời gian INT 30 Công nhân im lặng trong hơn nhiều giây này bị giết và khởi động lại.

Thường được đặt thành ba mươi giây. Chỉ đặt mức này cao hơn đáng kể nếu bạn chắc chắn về hậu quả cho nhân viên đồng bộ hóa. Đối với các công nhân không đồng bộ, điều đó chỉ có nghĩa là quy trình công nhân vẫn đang liên lạc và không bị ràng buộc với thời lượng cần thiết để xử lý một yêu cầu.

Tài liệu Gunicorn về thời gian chờ của công nhân

Hy vọng điều này giải quyết nó.


2
Giải pháp này đã cứu mạng tôi sau khi tôi tìm kiếm một giải pháp cả ngày. Nếu bạn thực sự có một quá trình chạy dài hơn 30 giây (đó là vấn đề của tôi), thì đây chắc chắn là giải pháp chính xác.
Alex P. Miller

Có, thậm chí chúng tôi có một kịch bản chạy dài hơn 30 giây, do đó chúng tôi đã áp dụng giải pháp. Rất vui được giúp đỡ.
saletanth 17/03/2015

Chúng tôi không có một kịch bản như vậy. Có một lưu lượng nhỏ trên trang web, nhưng công nhân hết thời gian mỗi ngày gần như cùng một lúc. Sau đó được chạy sau 1-2 phút. Thiết lập của tôi là nginx - giám sát viên - gunicorn - django. Tôi có thời gian chờ là 120 giây.
iamkhush

proxy_connect_timeout: "Xác định thời gian chờ để thiết lập kết nối với máy chủ được ủy quyền. Cần lưu ý rằng thời gian chờ này thường không thể vượt quá 75 giây ."
deweydb

@iamkhush bạn đã có thể tìm ra cách khắc phục cho việc này chưa? Tôi cũng phải đối mặt với vấn đề này ngay cả khi ứng dụng của tôi không hoạt động. Công nhân Gunicorn hết thời gian hàng ngày và không có giải pháp nào như tăng thời gian chờ dường như có hiệu quả.
Ankit Jaiswal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.