MODIFICA: Fondamentalmente sto cercando alcuni suggerimenti su come capire quali operazioni in background sono in esecuzione sulla mia istanza MongoDB e possibilmente ridurle/disabilitarle quando necessario in modo da non interferire con i test in esecuzione. Ho provato mongostat
e mongotop
ma non ho trovato nulla con loro che mi ha aiutato a capire quali operazioni in background sono in esecuzione e cosa sta iniziando. db.currentOp()
restituisce costantemente un array vuoto quando viene eseguito prima di iniziare a eseguire i test.Monitoraggio MongoDB "operazioni in background"?
Eseguo regolarmente test durante lo sviluppo con il nodo (moka, cetriolo). Da ieri, circa il 25% del inizializzazione del server di tempo non riesce tenta di connettersi a MongoDB con il seguente errore:
**Unhandled rejection MongoError: exception: cannot perform operation: a background operation is currently running for collection** somecollection
at Function.MongoError.create (/somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
at /somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:793:66
at bound (domain.js:254:14)
at runBound (domain.js:267:12)
at Callbacks.emit (.../node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:94:3)
at null.messageHandler (/somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:235:23)
at Socket.<anonymous> (/somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:294:20)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Socket.Readable.push (_stream_readable.js:126:10)
at TCP.onread (net.js:538:20)
Usiamo pow-mongodb-infissi per cancellare il db e riempirlo con alcuni dati di base prima di eseguire i test , che è dove sta succedendo. AFAIK nulla di importante è cambiato quando questo ha iniziato a succedere. Qualche idea in cui posso anche iniziare a cercare la fonte di questo errore?
controllo in esecuzione processo in background utilizzando db.currentOp(). In caso di processo in background attivo, il client è configurato per inviare questo errore –
Questo comando restituisce sempre una matrice vuota. Probabilmente prima di eseguirlo, l'operazione di background è terminata. Tuttavia, a volte ho bisogno di eseguire 3 o 4 volte per superare questo errore. – joniba
Potresti essere sulla strada giusta con 'db.currentOp()' ma forse non utilizzarlo correttamente. Questo articolo va più in profondità; [Visualizza e uccide le operazioni attualmente in esecuzione in MongoDB] (https://masteringmean.com/lessons/104-Viewing-and-killing-currently-executing-operations-in-MongoDB) –