Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

db.setProfilingLevel()

Nesta página

  • Definição
  • Sintaxe
  • Parâmetros
  • Devoluções
  • Comportamento
  • Exemplos
  • Habilite o profiler e defina o limite de operação lenta e a taxa de amostragem
  • Desative o profiler e defina o limite de operação lenta e a taxa de amostragem
  • Definir um filtro para determinar as operações perfiladas
  • Redefinir um filtro
db.setProfilingLevel(level, options)

Alterado na versão 5.0.

Para uma instância do mongod, o método habilita, desabilita ou configura o Profiler de banco de dados. O profiler captura e registra dados sobre o desempenho de operações de gravação, cursores e comandos de banco de dados em uma instância mongod em execução. Se o profiler estiver desabilitado, o método configurará como as operações lentas serão registradas no registro de diagnóstico.

Observação

As alterações feitas no nível de profiling com db.setProfilingLevel() não persistem. Quando o servidor é reiniciado, ele reverte para 0 (o padrão) ou o valor definido pela configuração operationProfiling.mode ou pela opção de linha de comando --profile.

Se onível do analisador de banco de dados for 1 ou 2 (especificamente, o analisador de banco de dados estiver ativado), slowms e sampleRate afetarão o comportamento do analisador e do diagnostic log.

Se o nível do analisador de banco de dados for 0 (especificamente, o analisador de banco de dados estiver desabilitado), os slowms e sampleRate afetarão somente o registro de diagnóstico.

Com instâncias mongos , o método define os ajustes de configuração slowms, sampleRate e filter, que definem como as operações são gravadas no registro de diagnóstico. Não é possível ativar o profiler de banco de dados em uma instância mongos porque mongos não possui nenhuma coleção nas quais o profiler possa gravar. O nível profile deve ser 0 para uma instância mongos .

Você pode especificar um filtro nas instâncias mongod e mongos para controlar quais operações são registradas pelo analisador. Quando você especifica um filter para o analisador, as opções slowms e sampleRate não são usadas para perfilar e linhas de registro de consulta lenta.

db.setProfilingLevel() fornece um invólucro para o comando profile .

A partir do MongoDB 5.0, as alterações feitas no analisador de banco de dados level, slowms, sampleRate ou filter usando o comando profile ou db.setProfilingLevel() método wrapper são registradas no log file.

O método db.setProfilingLevel() tem o seguinte formulário:

db.setProfilingLevel(<level>, <options>)
Parâmetro
Tipo
Descrição
level
inteiro

Configura o nível do perfil do banco de dados. Os seguintes níveis de analisador estão disponíveis:

Nível
Descrição
0
O analisador está desligado e não coleta dados. Este é o nível do analisador padrão.
1

O analisador coleta dados para operações que levam mais tempo do que o valor de slowms ou que correspondem a um filtro.

Quando um filtro é definido:

  • As opções slowms e sampleRate não são usadas para análise.

  • O criador de perfil captura somente as operações que correspondem ao filtro.

2
O analisador coleta dados para todas as operações.

Como a criação de perfil não está disponível em mongos, db.setProfilingLevel() não pode ser usado para definir o nível de criação de perfil como um valor diferente de 0 em uma instância mongos .

documento ou valor inteiro

Opcional. Aceita um valor inteiro ou um documento de opções. Se um valor inteiro for fornecido como argumento options em vez de um documento, o valor será atribuído a slowms. As seguintes opções estão disponíveis:

Padrão: 100
Tipo: número inteiro

O limite do tempo de operação lento, em milissegundos. As operações executadas por mais tempo que esse limite são consideradas lentas.

Quando logLevel é definido como 0, o MongoDB registra operações lentas no log de diagnóstico a uma taxa determinada por slowOpSampleRate.

Em configurações logLevel mais altas, todas as operações aparecem no registro de diagnóstico, independentemente da latência, com a seguinte exceção: o registro de mensagens de entrada lentas do oplog pelos secundários. Os secundários registram apenas as entradas lentas do oplog; aumentar o logLevel não registra todas as entradas do oplog.

Para instâncias mongod, a configuração afeta o registro de diagnóstico e, se ativado, o criador de perfil.

Para instâncias mongos, a configuração afeta somente o registro de diagnóstico e não o profiler porque o profiling não está disponível emmongos.

Observação

Esse argumento afeta a mesma configuração da opção slowOpThresholdMs do arquivo de configuração.

Padrão: 1.0
Tipo: double

A fração de operações lentas que devem ser analisadas ou registradas. sampleRate aceita valores entre 0 e 1, inclusive.

Para instâncias mongod, a configuração afeta o registro de diagnóstico e, se ativado, o criador de perfil.

Para instâncias mongos, a configuração afeta somente o registro de diagnóstico e não o profiler porque o profiling não está disponível emmongos.

Observação

Este argumento afeta a mesma configuração que a opção de configuração slowOpSampleRate.

Tipo: objeto

Uma expressão de filtro que controla quais operações são perfiladas e registradas. O campo na expressão de filtro pode ser qualquer campo na saída do profiler.

Para instâncias mongod, a configuração afeta o registro de diagnóstico e, se ativado, o criador de perfil.

Para instâncias mongos, a configuração afeta somente o registro de diagnóstico e não o profiler porque o profiling não está disponível emmongos.

Para obter um exemplo de um filtro usado para controlar operações registradas, consulte Definir um filtro para determinar operações com perfil.

Observação

Quando um filtro de criação de perfil é definido, as opções slowms e sampleRate não afetam o registro de diagnóstico ou o analisador.

O método retorna um documento que contém os valores anteriores das configurações.

Onde:

  • was é a configuração de nível anterior .

  • slowms é a configuração de slowms anterior .

  • sampleRate é a configuração anterior sampleRate .

  • filter é a configuração de filtro anterior .

  • note é uma string explicando o comportamento de filter. Este campo aparece somente no resultado quando filter também está presente.

Observação

Os campos filter e note só aparecem na saída se estiverem presentes na configuração de nível anterior.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

Aviso

A análise pode degradar o desempenho e expor dados de query não criptografados no registro do sistema. Considere cuidadosamente quaisquer implicações de desempenho e segurança antes de configurar e habilitar o analisador em um sistema de produção.

Consulte Sobrecarga do criador de perfil para obter mais informações sobre a possível degradação do desempenho.

Os seguintes conjuntos de exemplo para uma instância do mongod:

db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

O exemplo seguinte define a instância mongod ou mongos:

db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

Os seguintes conjuntos de exemplo para uma instância do mongod:

  • o nível de perfilação para 1,

  • um filtro de { op: "query", millis: { $gt: 2000 } }, que faz com que o criador de perfil registre apenas query operações que demoraram mais de 2 segundos.

db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } )

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

Para limpar um filtro de perfil, execute db.setProfilingLevel() com a opção filter: "unset".

db.setProfilingLevel( 1, { filter: "unset" } )

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

← db.setLogLevel()