sql >> Databáze >  >> NoSQL >> Redis

Co je tcp-backlog v redis.conf

Má tcp-backlog velikost "fronty kompletního připojení" (třícestné navázání spojení dokončeno, jak je popsáno zde) nebo "fronty neúplného připojení"?

tcp-backlog je velikost úplné fronty připojení . Redis ve skutečnosti předává tuto konfiguraci jako druhý parametr listen(int s, int backlog) zavolejte.

@GuangshengZuo již na tuto otázku měl dobrou odpověď. Takže se zaměřím na ten druhý.

Pokud to znamená „fronta kompletního připojení“, proč bych měl zvyšovat tcp_max_syn_backlog, který omezuje velikost fronty neúplných připojení?

Citace z dokumentu, který jste zmínil:

Implementace používá dvě fronty, frontu SYN (nebo frontu neúplného připojení) a frontu přijetí (nebo frontu kompletního připojení). Spojení ve stavu SYN RECEIVED jsou přidána do fronty SYN a později přesunuta do fronty pro přijetí, když se jejich stav změní na ESTABLISHED, tj. když je přijat ACK paket v 3-cestném handshake. Jak název napovídá, přijímací volání je pak implementováno jednoduše tak, aby spotřebovalo spojení z přijímací fronty. V tomto případě argument nevyřízených záležitostí systému listen syscall určuje velikost fronty přijetí.

Vidíme, že položky ve complete connection queue jsou přesunuty z incomplete connection queue .

Pokud máte velký somaxconn s malým tcp_max_syn_backlog , pak možná NEMÁTE dostatek položek na přesunutí do complete connection queue a complete connection queue nemusí být nikdy plné. Mnoho požadavků již mohlo být vyřazeno z první fronty dříve, než měly možnost být přesunuty do druhé.

Takže pouze zvyšte hodnotu somaxconn nemusí fungovat. Musíte je vychovat oba.



  1. Jak zřetězit řetězce v SQL

  2. MongoDb se vypne pomocí kódu 100

  3. Fungování dekorátoru @cache_page() v django-redis-cache

  4. Jaký je hlavní rozdíl mezi Redis a Membase?