Việc tăng net.core.somaxconn sẽ tạo ra sự khác biệt?


27

Tôi đã tham gia vào một đối số trên tham số net.core.somaxconn: Tôi được thông báo rằng nó sẽ không tạo ra bất kỳ sự khác biệt nào nếu chúng ta thay đổi 128 mặc định.

Tôi tin rằng đây có thể là bằng chứng đủ:

"Nếu đối số tồn đọng lớn hơn giá trị trong / Proc / sys / net / core / somaxconn, thì nó sẽ bị cắt ngắn âm thầm với giá trị đó" http://linux.die.net/man/2/listen

Nhưng nó không phải là.

Có ai biết một phương pháp để làm chứng điều này với hai máy, ngồi trên mạng Gbit không? Điều tốt nhất sẽ là chống lại MySQL, LVS, apache2 (2.2), memcached.

Câu trả lời:


43

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 .


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.