net.core.somaxconn
Chỉ cần thiết lập các giá trị cao hơn trên các máy chủ có tải trọng cao, nơi tốc độ kết nối mới quá cao / bùng nổ đến mức có 128 (50% nhiều hơn trong các kết nối chưa được chấp nhận của BSD: 128 backlog
+ 64 half-open
) được coi là bình thường. Hoặc khi bạn cần ủy thác định nghĩa "bình thường" cho chính ứng dụng.
Một số quản trị viên sử dụng cao net.core.somaxconn
để che giấu các vấn đề với dịch vụ của họ, do đó, theo quan điểm của người dùng, nó sẽ trông giống như một sự tăng vọt về độ trễ thay vì ngắt kết nối / hết thời gian (được kiểm soát bởi net.ipv4.tcp_abort_on_overflow
Linux).
listen(2)
hướng dẫn sử dụng nói - net.core.somaxconn
chỉ hoạt động ranh giới trên cho một ứng dụng miễn phí để chọn một cái gì đó nhỏ hơn (thường được đặt trong cấu hình của ứng dụng). Mặc dù một số ứng dụng chỉ sử dụng listen(fd, -1)
có nghĩa là đặt tồn đọng thành giá trị tối đa được hệ thống cho phép.
Nguyên nhân thực sự là tốc độ xử lý thấp (ví dụ: máy chủ chặn luồng đơn) hoặc không đủ số lượng luồng / quy trình công nhân (ví dụ: phần mềm chặn đa tiến trình / luồng như apache
/ tomcat
)
Tái bút Đôi khi, không nên nhanh chóng thất bại và để bộ cân bằng tải thực hiện công việc (thử lại) hơn là khiến người dùng chờ đợi - vì mục đích đó, chúng tôi đặt net.core.somaxconn
bất kỳ giá trị nào và giới hạn tồn đọng ứng dụng thành ví dụ 10
và đặt net.ipv4.tcp_abort_on_overflow
thành 1.
PPS. Các phiên bản cũ của nhân Linux có lỗi khó cắt giảm somaxcon
giá trị đối với 16 bit thấp hơn (nghĩa là giá trị truyền tới uint16_t
), do đó, việc nâng giá trị đó lên nhiều hơn 65535
thậm chí có thể nguy hiểm. Để biết thêm thông tin, hãy xem: http://patchwork.ozlabs.org/patch/255460/
Nếu bạn muốn đi sâu vào chi tiết hơn về tất cả các phần tồn đọng trong Linux, vui lòng đọc:
Cách thức hoạt động của TCP tồn đọng trong Linux .