Avem o aplicație Nginx+Ruby în care datele dintre Nginx și aplicație sunt interfațate printr-un socket.
Ca parte a îmbunătățirii performanței, când am analizat netstat
statisticile din partea aplicației am văzut acestea:
5334 pachete eliminate din coada de primire din cauza depășirii tamponului de socket
2299951 pachete s-au prăbușit în coada de primire din cauza memoriei tampon de socket scăzute
227365 ack-uri întârziate trimise
Presupunând că rmem
capacitatea tampon este problema pe care o găsim că:
$ sysctl net.ipv4.tcp_rmem
net.ipv4.tcp_rmem = 4096 87380 6291456
Cu toate acestea, privind cat /proc/net/protocols
:
protocol dimensiune sockets memory press maxhdr slab module 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 da ipv6 da y da n n da n n da da
RAWv6 1120 0 -1 NI 0 da ipv6 da y da n da
UDPLITEv6 1280 0 3 NI 0 da ipv6 da y da n da da da n da
UDPv6 1280 0 3 NI 0 da ipv6 da y da n da da da da da da da
TCPv6 2152 4 52 nu 256 da ipv6 y y y a y a y a y a y a n a
PACHET 1408 0 -1 NI 0 fără miez 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 da nucleu 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 da nucleu da a da n a da a da
PING 912 0 -1 NI 0 da nucleu aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
RAW 920 0 -1 NI 0 da nucleu a y a n a a n a a a a n a a a a n a
UDP 1088 4 3 NI 0 da nucleu aaaaaaaaaaaaaaaaaaaaaa
TCP 1992 209 52 nu 256 da nucleu a y y a y a y a y a
NETLINK 1048 0 -1 NI 0 fără nucleu n n n n n n n n n n n n n n n n n n n n
Vedem că nu există presiunea memoriei
.
Am dori câteva sfaturi în legătură cu următoarele:
- Cum putem afla dacă tamponul a fost efectiv depășit? Putem afla care a fost dimensiunea tamponului alocată într-o anumită perioadă de timp? Sau care a fost dimensiunea maximă a tamponului? Dacă dimensiunea maximă reală a tamponului a fost de 6 MiB, atunci putem presupune că tamponul a fost depășit.
- Dacă tamponul a fost depășit, de ce
presiunea memoriei
steagul nu este setat? Are presiunea memoriei
flag înseamnă că sistemul nu a fost capabil să aloce minim
dimensiunea memoriei tampon?
- Do
depășiri ale tamponului
și pachetul se prăbușește
înseamnă întotdeauna că dimensiunea bufferului de priză nu a fost suficientă?
Mulțumesc.