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:
- 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.
- 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?
- Làm
tràn bộ đệm
và gói sụp đổ
luôn có nghĩa là kích thước bộ đệm ổ cắm không đủ?
Cảm ơn bạn.