MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Защо MongoDB не реагира по време на тест за натоварване?

Поправено е:

sudo sysctl net.ipv4.tcp_tw_reuse=1

След това рестартирайте mongo.

Като алтернатива можете да го добавите към /etc/sysctl.conf (така че да се изпълнява при рестартиране):

net.ipv4.tcp_tw_reuse=1

След това стартирайте това за презареждане (без да се налага да рестартирате)

sudo sysctl -p /etc/sysctl.conf

Тази "корекция" ще деактивира състоянието на изчакване за TCP сокети (за целия сървър). Така че наистина изобщо не е поправка. Въпреки това, докато mongo намали тяхното състояние на изчакване чрез SO_LINGER, голям брой сървърни сокети ще се обединят в състояние TIME_WAIT и ще останат неизползваеми за нови връзки. Можете да видите броя на връзките за TIME_WAIT с това:

netstat -an | grep TIME_WAIT | wc -l

С това успях да видя как се проваля при около 28k TIME_WAIT връзки. Използване на този флаг на ядрото:

sysctl net.ipv4.ip_local_port_range="18000 65535"

Сървърът се проваля при 45k връзки. Така че, за да възпроизведете грешката по-лесно, можете да намалите диапазона до 200 или нещо малко.

И така, резултатът от това беше все пак програмен въпрос (както можете да видите от последната връзка):

TCP опция SO_LINGER (нула ) - когато е необходимо

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изтриете документи, върнати от заявка за агрегиране в mongodb

  2. Сравнете между 2 полета на документ в MongoDB

  3. Как да използвате NOT IN array условие в mongodb $lookup aggregate

  4. GSSException:Не са предоставени валидни идентификационни данни (ниво на механизма:Неуспешно намиране на Kerberos tgt)

  5. Mongodb сървърът не се стартира след промяна на dbpath