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

Mongo отваря твърде много връзки

Вие създавате екземпляр на класа Mongo за всяка отделна операция. Това няма да работи, тъй като всяко копие ще създаде и задържи поне една връзка (но по подразбиране 10) и тези връзки ще бъдат премахнати само ако Java GC изчисти вашия екземпляр на Mongo или когато извикате close().

Проблемът е, че и в двата случая ги създавате по-бързо, отколкото се затварят дори с помощта на една нишка. Това ще изчерпи максималния брой връзки набързо. Правилното решение е да запазите един екземпляр на Mongo, като използвате модела singleton (Mongo.Holder предоставя функционалност за това, опитайте Mongo.Holder.connect(..)). Бързо „поправяне“ е да увеличите ограничението на файловия дескриптор на вашата машина, така че максималният брой връзки да е значително по-висок, но очевидно в крайна сметка може да достигнете същото ограничение. Можете да проверите текущия си максимум, като използвате (в shell) :

db.serverStatus().connections

TL;DR :Отнасяйте се към екземпляр на Mongo като към сингълтън и ги направете възможно най-дълготрайни и сте златен. Внедряването на MongoFactory със статичен метод getInstance(), който връща лениво създаден екземпляр, ще свърши работа добре. Успех.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Група мангуста и преброяване

  2. свързване към база данни atlas mongo

  3. MongoDB 3.6 как да конвертирате низ в идентификатор на обект

  4. Не може да се свърже с MongoDB поради грешен URI

  5. Внедряване на приложението Meteor на собствен сървър