Ocasionalmente, as operações ficam fora de controle no MongoDB e podem terminar em execução por centenas de segundos e afetar o desempenho até que sejam eliminadas ou concluídas.
Quando isso acontece, sei que tenho killOp()
disponível para mim, mas como mato apenas as operações de longa duração direcionadas sem também matar (por exemplo) as operações de longa duração envolvidas na replicação (que podem ser perigosas)?
Isso pode ser um pouco complicado, mas o fato de o shell do MongoDB ser basicamente um interpretador de Javascript nos dá opções decentes em termos de filtragem. Aqui está a função que eu uso para fazer isso:
Isso só eliminará as consultas acima do
maxSecsRunning
limite e não afetará nada em execução nolocal
banco de dados, que é ondeoplog
reside (e, portanto, é o banco de dados que está envolvido nas operações de replicação de longa duração. É relativamente fácil adicionar critérios àif
condicional interna para direcionar as operações com mais precisão, conforme necessário, com base em necessidades específicas.O código também está disponível como uma essência (onde me lembrarei de atualizá-lo continuamente).