tóm tắt các vấn đề
chúng tôi đang có một thiết lập trong đó rất nhiều (800-2400 mỗi giây (kết nối đến một hộp linux và chúng tôi có một thiết bị NAT giữa client và server. do đó, có rất nhiều ổ cắm TIME_WAIT còn lại trong hệ thống Để khắc phục điều đó, chúng tôi đã đặt tcp_tw_recycle thành 1, nhưng điều đó dẫn đến sự sụt giảm trong các kết nối đang truy cập sau khi duyệt qua mạng chúng tôi đã tìm thấy tài liệu tham khảo khung với tcp_tw_recycle và thiết bị NAT xảy ra.Thả các kết nối với tcp_tw_recycle
độ phân giải đã thử
chúng tôi sau đó đã thử bằng cách đặt tcp_tw_reuse thành 1 nó hoạt động tốt mà không gặp bất kỳ sự cố nào với cùng một thiết lập và cấu hình.
Nhưng tài liệu nói rằng tcp_tw_recycle và tcp_tw_reuse không nên được sử dụng khi kết nối đi qua nút nhận biết trạng thái TCP, chẳng hạn như tường lửa, thiết bị NAT hoặc bộ cân bằng tải có thể thấy khung bị rớt. Càng có nhiều kết nối, bạn càng có nhiều khả năng gặp vấn đề này.
Truy vấn
1) có thể sử dụng tcp_tw_reuse trong loại trường hợp này không? 2) nếu không, phần nào của mã linux đang ngăn chặn tcp_tw_reuse được sử dụng cho kịch bản như vậy? 3) nói chung sự khác nhau giữa tcp_tw_recycle và tcp_tw_reuse là gì?
Liên kết ở dưới cùng bị hỏng – nhed
Cảm ơn rất nhiều. Tôi gặp chính xác trường hợp này - máy chủ đằng sau NAT sẽ ngẫu nhiên không thể kết nối, và vô hiệu hóa net.ipv4.timestamps chỉ có tất cả mọi thứ tốt (tcp_tw_recycle và tcp_tw_reuse đều được kích hoạt trên cả hai máy). – Yurii
Tôi tin rằng, nó phải là 'tcp_fin_timeout' và không phải' tcp_timewait_len'. Nhưng có lẽ nó đã thay đổi trong phiên bản hạt nhân? – Trendfischer