Điểm:2

Điều chỉnh Kernel TCP để tránh tràn bộ đệm và sập gói

lá cờ cn

Chúng tôi có ứng dụng Nginx+Ruby trong đó dữ liệu giữa Nginx và ứng dụng được giao tiếp thông qua một ổ cắm.

Là một phần của cải thiện hiệu suất, khi chúng tôi phân tích netstat số liệu thống kê về phía ứng dụng, chúng tôi đã thấy những điều sau:

    5334 gói bị cắt bớt khỏi hàng đợi nhận do tràn bộ đệm ổ cắm
    2299951 gói bị sập trong hàng đợi nhận do bộ đệm ổ cắm thấp
    227365 acks bị trì hoãn gửi

Giả sử rmem dung lượng bộ đệm là vấn đề chúng tôi nhận thấy rằng:

$ sysctl net.ipv4.tcp_rmem
net.ipv4.tcp_rmem = 4096 87380 6291456

Tuy nhiên, nhìn vào mèo /proc/net/giao thức:

kích thước giao thức ổ cắm bộ nhớ nhấn mô-đun phiến maxhdr cl co di ac io in de sh ss gs se re sp bi br ha uh gp em
PINGv6 1120 0 -1 NI 0 có ipv6 y y y n n y n n y y y y n y y y y n
RAWv6 1120 0 -1 NI 0 có ipv6 y y y n y y y n y y y y n y y y n n
UPPLITEv6 1280 0 3 NI 0 có ipv6 y y y n y y y n y y y y n n n
UDPv6 1280 0 3 NI 0 có ipv6 y y y n y y y n y y y y n n n y y y n
TCPv6 2152 4 52 không 256 có ipv6 y y y y y y y y y y y n y y y y
GÓI 1408 0 -1 NI 0 không có nhân n n n n n n n n n n n n n n n n n n n
UNIX 1024 24 -1 NI 0 yes nhân n n n n n n n n n n n n n n n n n n n
UDP-Lite 1088 0 3 NI 0 yes kernel y y y n y y y n y y y y y n n
PING 912 0 -1 NI 0 yes nhân y y y n n y n n y y y y n y y y y y n
RAW 920 0 -1 NI 0 yes nhân y y y n y y y n y y y n y y y y n
UDP 1088 4 3 NI 0 yes hạt nhân y y y n y y y n y y y y y n n
TCP 1992 209 52 không 256 có nhân y y y y y y y y y y y y n y y y y
NETLINK 1048 0 -1 NI 0 không nhân n n n n n n n n n n n n n n n n n n

Chúng tôi thấy rằng không có áp lực bộ nhớ.

Chúng tôi xin có một số lời khuyên như sau:

  1. Làm cách nào chúng tôi có thể biết liệu bộ đệm có thực sự bị tràn hay không? Chúng tôi có thể tìm ra kích thước bộ đệm được phân bổ trong một khoảng thời gian nhất định không? Hoặc kích thước bộ đệm tối đa là bao nhiêu? Nếu kích thước bộ đệm tối đa thực tế là 6 MiB thì chúng ta có thể cho rằng bộ đệm đã bị tràn.
  2. Nếu bộ đệm bị tràn, tại sao áp lực bộ nhớ cờ không được thiết lập? Liệu áp lực bộ nhớ cờ có nghĩa là hệ thống không thể phân bổ tối thiểu kích thước bộ đệm?
  3. Làm tràn bộ đệmgói sụp đổ luôn có nghĩa là kích thước bộ đệm ổ cắm không đủ?

Cảm ơn bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.