Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Co to jest tcp-backlog w redis.conf

Czy tcp-backlog ma rozmiar „kompletnej kolejki połączeń” (zakończono trójstronne uzgadnianie, co jest opisane tutaj) czy „niekompletnej kolejki połączeń”?

tcp-backlog to rozmiar pełnej kolejki połączeń . W rzeczywistości Redis przekazuje tę konfigurację jako drugi parametr listen(int s, int backlog) zadzwoń.

@GuangshengZuo miał już dobrą odpowiedź na to pytanie. Więc skupię się na tym drugim.

Jeśli oznacza to "kompletną kolejkę połączeń", to dlaczego mam podnosić tcp_max_syn_backlog, który ogranicza rozmiar niekompletnej kolejki połączeń?

Cytat z dokumentu, o którym wspomniałeś:

Implementacja wykorzystuje dwie kolejki, kolejkę SYN (lub niekompletną kolejkę połączenia) i kolejkę akceptującą (lub pełną kolejkę połączeń). Połączenia w stanie SYN RECEIVED są dodawane do kolejki SYN, a następnie przenoszone do kolejki akceptacji, gdy ich stan zmieni się na ESTABLISHED, tj. po odebraniu pakietu ACK w uzgadnianiu trójstronnym. Jak sama nazwa wskazuje, wywołanie akceptacji jest następnie implementowane po prostu w celu wykorzystania połączeń z kolejki akceptacji. W tym przypadku argument zaległości wywołania systemowego nasłuchiwania określa rozmiar kolejki akceptacji.

Widzimy, że elementy w complete connection queue są przenoszone z incomplete connection queue .

Jeśli masz duży somaxconn z małym tcp_max_syn_backlog , możesz NIE mieć wystarczającej liczby elementów do przeniesienia do complete connection queue i complete connection queue może nigdy nie być pełna. Wiele żądań mogło już zostać usuniętych z pierwszej kolejki, zanim miały szansę zostać przeniesione do drugiej.

Więc podnieś tylko wartość somaxconn może NIE działać. Musisz wychować ich obu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis kolejka wiadomości pubsub, ale z wywołaniem zwrotnym, jak w ZeroMQ

  2. jak czytasz wszystkie bajty, które przychodzą na połączenie tcp?

  3. Implementuj zestawy referencyjne w Redis

  4. Dekodowanie Go JSON jest bardzo powolne. Jaki byłby lepszy sposób na zrobienie tego?

  5. Paradygmat programowania asynchronicznego z nodejs i redis-node