MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Gerenciando operações de longa duração no MongoDB


MongoDB oferece várias ferramentas para gerenciar operações de longa duração no sistema. É extremamente importante acompanhar as operações em execução no servidor de produção a qualquer momento, pois, em alguns casos, você pode ter consultas rouge ou compilações de índice que estão prejudicando o desempenho do servidor.

O comando do MongoDB que fornece essa informação é “db.currentOp()”. Para obter mais informações, consulte a documentação do MongoDB para db.currentOp(). O comando recebe parâmetros para restringir a saída por banco de dados, operação, tempo de execução etc.

Aqui está um exemplo de saída:
{
  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 }
}

Os campos mais interessantes são:
  1. opide - ID da operação.
  2. op - A operação que está sendo executada.
  3. ns - O banco de dados e a coleção em que a operação está sendo executada.
  4. secs_running - O número de segundos em que a operação está em execução.

Depois de identificar as operações de longa duração, você pode querer encerrá-las em alguns casos. A operação que você deseja usar é:
db.killOp(<opid>)

Escusado será dizer que você deseja usar este comando com muito cuidado. Não encerre operações que você não conhece. Pessoalmente, só me sinto confortável em encerrar consultas de longa duração.

Se você tiver operações que demoram muito tempo, o MongoDB oferece outra opção – maxTimeMS:
E.g. db.find(...).maxTimeMS(30)

Se você sabe que tem operações de longa duração que deseja parar após um certo tempo de execução ter excedido, use a opção maxTimeMS para definir um limite no tempo de execução desta operação.

Na ScaleGrid, entendemos a importância desse fluxo de trabalho, por isso o incorporamos ao nosso console de administração. O console 'admin' na página de detalhes do cluster fornece acesso à lista de operações em seu servidor MongoDB:





Você também pode selecionar uma operação específica e optar por encerrá-la. Como sempre, exerça esta opção com discrição: