Puncte:2

Reglare TCP kernel pentru depășirea tamponului și colapsul pachetului

drapel cn

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:

  1. 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.
  2. 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?
  3. 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.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.