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

твърде много отворени файлове в сървъра mgo go

Това не е начинът, по който съхранявате и използвате MongoDB връзка в Go.

Трябва да съхраните mgo.Session , а не mgo.Database екземпляр. И всеки път, когато трябва да взаимодействате с MongoDB, вие придобивате копие или клонинг на сесията (например с Session.Copy() или Session.Clone() ) и го затваряте, когато не ви е нужен (за предпочитане с помощта на defer изявление). Това ще гарантира, че няма да пропуснете връзки.

Вие също религиозно пропуснете проверката за грешки, моля, не правете това. Каквото и да връща error , проверете го и действайте правилно (най-малкото, което можете да направите, е да го отпечатате/регистрирате).

Така че основно това, което трябва да направите, е нещо подобно:

var session *mgo.Session

func init() {
    var err error
    if session, err = mgo.Dial("localhost"); err != nil {
        log.Fatal(err)
    }
}

func someHandler(w http.ResponseWriter, r *http.Request) {
    sess := session.Copy()
    defer sess.Close() // Must close!

    c := sess.DB("mapdb").C("tiles")
    // Do something with the collection, e.g.
    var tile bson.M
    if err := c.FindId("someTileID").One(&result); err != nil {
        // Tile does not exist, send back error, e.g.:
        log.Printf("Tile with ID not found: %v, err: %v", "someTileID", err)
        http.NotFound(w, r)
        return
    }
    // Do something with tile
}

Вижте свързани въпроси:

mgo – производителността на заявката изглежда постоянно бавна (500-650ms)

Паралелност в gopkg.in/mgo.v2 (Mongo, Go)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Проверете удостоверяването на MongoDB с драйвер за Java 3.0

  2. Ограничение на дълбочината на полето на вложените в MongoDB обекти

  3. Как да изпълним addToSet с официалния драйвер на Go?

  4. Как да използвате променливи във функцията за намаляване на картата на MongoDB

  5. Уникалният индекс на Mongo не е чувствителен към малки и големи букви