sql >> Database >  >> NoSQL >> MongoDB

Langlopende bewerkingen beheren in MongoDB

MongoDB geeft je een aantal tools om langlopende bewerkingen in het systeem te beheren. Het is uiterst belangrijk om op elk moment de bewerkingen bij te houden die op uw productieserver worden uitgevoerd, omdat u in sommige gevallen rouge-query's of indexbuilds kunt hebben die de prestaties van uw server nadelig beïnvloeden.

De MongoDB-opdracht die u deze informatie geeft, is "db.currentOp()". Raadpleeg de MongoDB-documentatie voor db.currentOp() voor meer informatie. De opdracht heeft parameters nodig om de uitvoer te beperken met db, bewerking, uitvoeringstijd enz.

Hier is een voorbeelduitvoer:

{
  opid: 294,
  active: false,
  op: "query",
  ns: "admin",
  query: { "query": {}, orderby: { "$natural": -1 } },
  client: "0.0.0.0:0",
  desc: "rsMgr",
  threadId: "0x7f3e6af3f700",
  waitingForLock: false,
  numYields: 0,
  lockStats: { timeLockedMicros: { R: 1, W: 1 },
  timeAcquiringMicros: { r: 1, w: 1 }
}

De meest interessante velden zijn:

  1. opid - ID van de operatie.
  2. op - De bewerking die wordt uitgevoerd.
  3. ns - De database en verzameling waarop de bewerking wordt uitgevoerd.
  4. secs_running - Het aantal seconden dat de bewerking is uitgevoerd.

Zodra u de langlopende bewerkingen hebt geïdentificeerd, wilt u ze in sommige gevallen misschien beëindigen. De bewerking die u wilt gebruiken is:

db.killOp(<opid>)

Het spreekt voor zich dat u dit commando zeer zorgvuldig wilt gebruiken. Beëindig geen bewerkingen waarvan u niets weet. Persoonlijk voel ik me alleen op mijn gemak bij het beëindigen van langlopende vragen.

Als je bewerkingen hebt die consequent lang duren, biedt MongoDB een andere optie - maxTimeMS:

E.g. db.find(...).maxTimeMS(30)

Als je weet dat je langlopende bewerkingen hebt die je wilt stoppen nadat een bepaalde uitvoeringstijd is overschreden, gebruik dan de maxTimeMS-optie om een ​​limiet in te stellen op de uitvoeringstijd van deze op.

Bij ScaleGrid begrijpen we het belang van deze workflow - daarom hebben we deze ingebouwd in onze beheerdersconsole. De 'admin'-console op de pagina met clusterdetails biedt toegang tot de bewerkingslijst op uw MongoDB-server:

U kunt ook een bepaalde bewerking selecteren en ervoor kiezen deze te beëindigen. Gebruik deze optie zoals altijd met discretie:


  1. Hoe het CPU-gebruik van de Redis-server te verbeteren?

  2. Percona Live Frankfurt 2018 - Evenementoverzicht en onze sessies

  3. Een gids voor het configureren van een load balancer in een MongoDB Sharded-cluster

  4. Hoe kan ik zien waar mongoDB gegevens opslaat? (het staat niet in de standaard /data/db!)