net.core.somaxconnChỉ 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_overflowLinux).
listen(2)hướng dẫn sử dụng nói - net.core.somaxconnchỉ 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.somaxconnbất kỳ giá trị nào và giới hạn tồn đọng ứng dụng thành ví dụ 10và đặt net.ipv4.tcp_abort_on_overflowthành 1.
PPS. Các phiên bản cũ của nhân Linux có lỗi khó cắt giảm somaxcongiá 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 65535thậ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 .