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

MongoDB:चेतावनी लॉगिंग को अक्षम कैसे करें:ClientCursor::staticYield पुनरावर्ती लॉक के b/c को अनलॉक नहीं कर सकता है?

मैं हाल ही में इस त्रुटि को स्वयं देख रहा हूं क्योंकि मैं mongod.log से उत्पन्न प्रति माह 25Gb देख रहा था इसी तरह के संदेश के साथ। हालांकि, मैंने देखा कि लॉग संदेश में एक क्वेरी शामिल थी (मैंने इस पोस्ट में फिट होने के लिए संदेश को स्वरूपित किया है, यह वास्तव में एक पंक्ति पर था):

warning: ClientCursor::yield can't unlock b/c of recursive lock ns: my-database.users top:
{
    opid: 1627436260,
    active: true,
    secs_running: 0,
    op: "query",
    ns: "my-database",
    query:
    {
        findAndModify: "users",
        query: { Registered: false, Completed: 0 },
        sort: { Created: 1 },
        update: { $set: { NextRefresh: "2014-12-07" } },
        new: true
    },
    client: "10.1.34.175:53582",
    desc: "conn10906412",
    threadId: "0x7f824f0f9700",
    connectionId: 10906412,
    locks: { ^: "w", ^my-database: "W" },
    waitingForLock: false,
    numYields: 0,
    lockStats: { timeLockedMicros: {}, timeAcquiringMicros: { r: 0, w: 3 } }
}

कुछ गुगलिंग ने खुलासा किया कि यह संदेश सबसे अधिक तब उठाया जाता है जब क्वेरी किसी इंडेक्स का उपयोग नहीं कर सकती है। मैंने .explain() . का उपयोग करने का प्रयास किया लॉग में क्वेरी के साथ और निश्चित रूप से यह दर्शाता है कि एक BasicCursor बिना किसी अनुक्रमणिका के उपयोग किया जा रहा था:

db.users.find( { Registered: false, Completed: 0 } ).sort( { Created: 1 } ).explain()
{
    "cursor" : "BasicCursor",
    "isMultiKey" : false,
    "n" : 0,
    "nscannedObjects" : 10453,
    "nscanned" : 10453,
    "nscannedObjectsAllPlans" : 10453,
    "nscannedAllPlans" : 10453,
    "scanAndOrder" : true,
    "indexOnly" : false,
    "nYields" : 1,
    "nChunkSkips" : 0,
    "millis" : 7,
    "indexBounds" : {

    },
    "server" : "mongodb-live.eu-west-1a.10_1_2_213:27017"
}

क्वेरी में तत्वों के लिए एक अनुक्रमणिका जोड़ने से समस्या ठीक हो गई। लॉग अब उत्पन्न नहीं हुआ था और जब मैंने .explain() चलाया था फिर से यह दिखाया गया कि एक इंडेक्स का इस्तेमाल किया जा रहा है:

{
    "cursor" : "BtreeCursor Registered_1_Completed_1",
    "isMultiKey" : false,
    "n" : 0,
    "nscannedObjects" : 0,
    "nscanned" : 0,
    "nscannedObjectsAllPlans" : 0,
    "nscannedAllPlans" : 1,
    "scanAndOrder" : true,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 0,
    "indexBounds" : {
        "Registered" : [
            [
                false,
                false
            ]
        ],
        "Completed" : [
            [
                0,
                0
            ]
        ]
    },
    "server" : "mongodb-live.eu-west-1a.10_1_2_213:27017"
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कस्टम संग्रह नाम के साथ स्प्रिंग डेटा MongoDB रिपोजिटरी

  2. मोंगो डॉट संकेतन अस्पष्टता

  3. ऐप विकास में काम करता है लेकिन उसकेोकू में तैनात होने पर नहीं

  4. नेवला - ईमेल सिंटैक्स मान्य करें

  5. मोंगो डीबी (mongodb.service) विफल, स्थिति 14