Supplement · Nginx
Timeout, retry và buffering
Connect, send và read timeout đo các khoảng không hoạt động khác nhau, không phải một end-to-end deadline. Tổng latency có thể vượt từng timeout qua nhiều attempt.
Failure semantics
proxy_next_upstreamquy định lỗi nào được retry và bị giới hạn bởi tries/timeout.- Retry request không-idempotent có thể nhân đôi side effect; “chưa nhận response” không chứng minh backend chưa commit.
- Request buffering đọc body trước khi gửi upstream; response buffering tách tốc độ backend khỏi slow client nhưng dùng memory/temp disk.
- Tắt buffering phù hợp streaming, nhưng worker giữ upstream connection lâu hơn và backpressure truyền thẳng.
- Timeout budget phải giảm dần từ client → edge → service → dependency và có cancellation semantics.
Incident pattern: retry storm làm backend đang chậm nhận thêm traffic. Bound retries, dùng idempotency key và load shedding.