Cài đặt cố định cho Gunicorn phía sau ELB mà không có Nginx


15

API REST của ứng dụng của chúng tôi được Gunicorn ( không đứng sau Nginx) chạy trên các phiên bản AWS EC2 với thiết lập cân bằng tải / tự động điển hình điển hình. Thời gian chờ nhàn rỗi của bộ cân bằng tải là 60 giây và thời gian chờ duy trì của Gunicorn là 2 giây. Chúng tôi đã được nhìn thấy 504 Gateway Timeoutphản ứng lẻ tẻ từ cấu hình này. Theo tài liệu của Amazon , điều này có thể là do thời gian chờ duy trì của máy chủ thấp hơn cài đặt hết thời gian chờ của bộ cân bằng tải:

Nguyên nhân 2: Các trường hợp đã đăng ký đóng kết nối với Cân bằng tải đàn hồi.

Giải pháp 2: Kích hoạt cài đặt duy trì trên các phiên bản EC2 của bạn và đặt thời gian chờ duy trì lớn hơn hoặc bằng với cài đặt hết thời gian chờ của bộ cân bằng tải của bạn.

Với Nginx, mặc định keepalive_timeoutlà 75 giây, rõ ràng hoạt động tốt với cài đặt mặc định ELB. Tuy nhiên, tài liệu Gunicorn đề xuất keepalivecài đặt trong khoảng 1-5 giây.

Liệu có ý nghĩa gì khi khiến Gunicorn giữ vững đến 75 giây, hay có lý do chính đáng để giữ nó dưới 5 giây mặc dù chúng tôi không sử dụng proxy ngược trước nó?

Câu trả lời:


16

Bạn gần như chắc chắn sẽ muốn tăng bộ đếm thời gian cố định theo khuyến nghị ELB, vì ELB sử dụng lại các kết nối. Nó sẽ giữ chúng cho đến khi hết thời gian và nếu một yêu cầu khác đến ELB, nó sẽ thường sử dụng một trong các kết nối đã mở để gửi cho bạn.

504 Gateway Timeout là một lỗi kỳ lạ đối với tình trạng này nhưng có vẻ như đó là những gì ELB trả về khi việc sử dụng lại kết nối trùng với kết thúc sớm của back-end.

Đề xuất 5 giây có thể có ý nghĩa nếu các trình duyệt giao tiếp trực tiếp với back-end, nhưng đó không phải là trường hợp của ELB, đây là một proxy ngược thích hợp khi chạy ở chế độ HTTP.


Cảm ơn, đây là những gì tôi nghi ngờ. Tôi sẽ thử thay đổi này trong tuần này và đánh dấu câu trả lời của bạn chính xác nếu mọi thứ diễn ra suôn sẻ :)
handofaten

Chúng tôi đã hợp nhất sự thay đổi khoảng một tuần trước và 504 đã trở nên ít phổ biến hơn (một vài lần một tuần thay vì vài trăm lần một tuần).
handofaten
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.