sql >> Database teknologi >  >> NoSQL >> Redis

Hvad er tcp-backlog i redis.conf

Er tcp-backlog størrelsen på "komplet forbindelseskø" (tre-vejs håndtryk komplet, hvad der er beskrevet her) eller "ufuldstændig forbindelseskø"?

tcp-backlog er størrelsen på komplet forbindelseskø . Faktisk sender Redis denne konfiguration som den anden parameter i listen(int s, int backlog) ring.

@GuangshengZuo havde allerede et godt svar på dette spørgsmål. Så jeg vil fokusere på den anden.

Hvis det betyder "fuldstændig forbindelseskø", hvorfor skulle jeg så hæve tcp_max_syn_backlog, som begrænser størrelsen af ​​en ufuldstændig forbindelseskø?

Citat fra den læge, du nævnte:

Implementeringen bruger to køer, en SYN-kø (eller ufuldstændig forbindelseskø) og en acceptkø (eller komplet forbindelseskø). Forbindelser i tilstanden SYN MODTAGET føjes til SYN-køen og flyttes senere til acceptkøen, når deres tilstand ændres til ETABLERET, dvs. når ACK-pakken i 3-vejs-håndtrykket modtages. Som navnet antyder, implementeres acceptopkaldet blot for at forbruge forbindelser fra acceptkøen. I dette tilfælde bestemmer backlog-argumentet for listen syscall størrelsen på acceptkøen.

Vi kan se, at elementer i complete connection queue flyttes fra incomplete connection queue .

Hvis du har en stor somaxconn med en lille tcp_max_syn_backlog , så har du muligvis IKKE nok elementer til at blive flyttet til den complete connection queue , og den complete connection queue bliver måske aldrig fuld. Mange anmodninger er muligvis allerede blevet slettet fra den første kø, før de har mulighed for at blive flyttet til den anden.

Så hæv kun værdien af ​​somaxconn virker muligvis IKKE. Du skal hæve dem begge.



  1. Pymongo / MongoDB:oprette indeks eller sikre indeks?

  2. Er der nogen måde at gendanne nyligt slettede dokumenter i MongoDB?

  3. Hvad er standarddatabasestien til MongoDB?

  4. Node redis-udgiver bruger for meget hukommelse