sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvorfor reagerer MongoDB ikke under en belastningstest?

Rettede det:

sudo sysctl net.ipv4.tcp_tw_reuse=1

Genstart derefter mongo.

Alternativt kan du tilføje den til /etc/sysctl.conf (så den køres ved genstart):

net.ipv4.tcp_tw_reuse=1

Kør derefter dette for at genindlæse (uden at skulle genstarte)

sudo sysctl -p /etc/sysctl.conf

Denne "fix" vil deaktivere timewait-tilstanden for TCP-sockets (server-dækkende). Så det er virkelig ikke en løsning overhovedet. Men indtil mongo reducerer deres timewait-tilstand ved hjælp af SO_LINGER, vil et stort antal serversockets samle sig i TIME_WAIT-tilstanden og forblive ubrugelige til nye forbindelser. Du kan se antallet af forbindelser i TIME_WAIT med dette:

netstat -an | grep TIME_WAIT | wc -l

Med det var jeg i stand til at se det fejle ved omkring 28k TIME_WAIT-forbindelser. Brug af dette kerneflag:

sysctl net.ipv4.ip_local_port_range="18000 65535"

Serveren fejler ved 45k forbindelser. Så for at genskabe fejlen nemmere kan du sænke området til 200 eller noget lille.

Så resultatet af dette var et programmeringsspørgsmål trods alt (som du kan se fra sidste link):

TCP-mulighed SO_LINGER (nul ) - når det er påkrævet

http://alas.matf.bg.ac.rs /manuals/lspe/snode=105.html



  1. Hvorfor koder PyMongo uuid.uuid1() som en BSON::Binær?

  2. En sikkerhedstjekliste til MongoDB-produktionsinstallationer

  3. Mongodb opslagsrække af elementer med kombineret resultat

  4. Sådan søger du efter en post og derefter sletter den