sql >> Databasteknik >  >> NoSQL >> Redis

Vad är tcp-backlog i redis.conf

Är tcp-backlog storleken på "fullständig anslutningskö" (trevägshandskakning klar, vad som beskrivs här) eller "ofullständig anslutningskö"?

tcp-backlog är storleken på fullständig anslutningskö . Faktum är att Redis skickar denna konfiguration som den andra parametern i listen(int s, int backlog) ring.

@GuangshengZuo hade redan ett bra svar på den här frågan. Så jag fokuserar på den andra.

Om det betyder "fullständig anslutningskö" varför ska jag då höja tcp_max_syn_backlog som begränsar storleken på en ofullständig anslutningskö?

Citat från dokumentet du nämnde:

Implementeringen använder två köer, en SYN-kö (eller ofullständig anslutningskö) och en acceptkö (eller fullständig anslutningskö). Anslutningar i tillståndet SYN MOTTAGET läggs till i SYN-kön och flyttas senare till acceptkön när deras tillstånd ändras till ETABLISHED, dvs när ACK-paketet i 3-vägshandskakningen tas emot. Som namnet antyder implementeras sedan acceptanropet helt enkelt för att konsumera anslutningar från acceptkön. I det här fallet bestämmer backlog-argumentet för lyssningssyscallen storleken på acceptkön.

Vi kan se att objekt i complete connection queue flyttas från den incomplete connection queue .

Om du har en stor somaxconn med en liten tcp_max_syn_backlog , då kanske du INTE har tillräckligt med objekt för att flyttas till den complete connection queue , och den complete connection queue kanske aldrig blir full. Många förfrågningar kan redan ha tappats från den första kön innan de har chansen att flyttas till den andra.

Så höj bara värdet på somaxconn kanske INTE fungerar. Du måste höja båda.



  1. Redis:Hur skär man en normal uppsättning med en sorterad uppsättning?

  2. Skapa flerfältsindex i Mongoose / MongoDB

  3. MongoDB + nodejs :hur frågar man ISODate-fält?

  4. Aggregerande i lokal tidszon i mongodb