MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

एमजीओ गो सर्वर में बहुत अधिक खुली फाइलें

इस तरह से आप गो में मोंगोडीबी कनेक्शन को स्टोर और उपयोग नहीं करते हैं।

आपको एक 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
}

संबंधित प्रश्न देखें:

एमजीओ - क्वेरी का प्रदर्शन लगातार धीमा लगता है (500-650ms)

gopkg.in/mgo.v2 (मोंगो, गो) में संगामिति



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. AdminBro, एक्सप्रेस, mongoDB, mongoose के साथ पाँच मिनट में एक व्यवस्थापक क्षेत्र बनाना

  2. मोंगोडीबी डिलीटमैनी ()

  3. स्प्रिंग बूट और MongoDB से कनेक्शन विवरण कैसे कॉन्फ़िगर करें?

  4. मोंगोडब के साथ एक्सप्रेस और पासपोर्ट का उपयोग करके नोडज में सरल लॉगिन पृष्ठ

  5. विंडोज़ में मोंगोडीबी से कैसे कनेक्ट करें?