sql >> Databáze >  >> NoSQL >> MongoDB

Proč MongoDB během zátěžového testu nereaguje?

Opraveno:

sudo sysctl net.ipv4.tcp_tw_reuse=1

Poté restartujte mongo.

Případně jej můžete přidat do /etc/sysctl.conf (takže bude spuštěn po restartu):

net.ipv4.tcp_tw_reuse=1

Poté spusťte toto pro opětovné načtení (bez nutnosti restartování)

sudo sysctl -p /etc/sysctl.conf

Tato "oprava" deaktivuje stav timewait pro TCP sokety (na celém serveru). Takže to vlastně vůbec není oprava. Dokud však mongo nezkrátí svůj stav timewait pomocí SO_LINGER, velké množství serverových soketů se shromáždí ve stavu TIME_WAIT a zůstanou nepoužitelné pro nová připojení. Počet připojení za TIME_WAIT můžete zobrazit takto:

netstat -an | grep TIME_WAIT | wc -l

Díky tomu jsem viděl, že selhává při přibližně 28 000 připojení TIME_WAIT. Pomocí tohoto příznaku jádra:

sysctl net.ipv4.ip_local_port_range="18000 65535"

Server selže při 45 kB připojení. Aby se chyba snadněji reprodukovala, můžete snížit rozsah na 200 nebo něco malého.

Takže výsledek tohoto byl přeci jen programátorská otázka (jak můžete vidět z posledního odkazu):

možnost TCP SO_LINGER (nula ) – když je to vyžadováno

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



  1. Schéma Mongodb pro příspěvky a sdílení

  2. Jak (KDE) sloupec =sloupec v Mongu?

  3. Ekvivalent možnosti mongo's out:reduce v hadoopu

  4. mongodb filtrovat dokumenty s délkou, šířkou a konkrétní vzdáleností