Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

perfil

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Exemplo
  • Habilitar filtragem
  • Redefinir um filtro
profile

Alterado na versão 5.0.

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

Em mongod, se o nível do criador de perfil do banco de dados estiver 2, o log completo será habilitado no criador de perfil e no diagnostic log.

No nível do perfil do banco de dados 1, as seguintes configurações modificam tanto o perfil quanto o diagnostic log:

Se o nível do perfil do banco de dados for 0, o perfil do banco de dados será desabilitado. No nível 0, as seguintes configurações modificam apenas o registro de diagnóstico:

Para uma instância do mongos , o comando configura somente como as operações são gravadas no registro de diagnóstico. Não é possível habilitar o criador de profiler de banco de dados de dados em uma instância mongos porque mongos não tem nenhuma coleção na qual o criador de profiler possa gravar.

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.

Em mongos, você pode definir profile nível para:

  • 0 para definir slowms, sampleRate e filter para o registro de diagnóstico;

  • -1 para ler as configurações atuais.

O profiler está desativado por padrão.

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.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

db.runCommand(
{
profile: <level>,
slowms: <threshold>,
sampleRate: <rate>,
filter: <filter expression>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
profile
int

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

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

O profiler coleta dados para operações que excedem o limite de slowms ou correspondem a um filtro especificado.

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 no mongos, o comando profile não pode ser usado para definir o nível do perfil para um valor diferente de 0 em uma instância mongos.

slowms
int

Opcional. Padrão: 100

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

As operações lentas são registradas com base em workingMillis, que é a quantidade de tempo que o MongoDB gasta trabalhando nessa operação. Isso significa que fatores como a espera por bloqueios e o controle de fluxo não afetam o fato de uma operação exceder o limite de operação lenta.

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 log de diagnóstico, independentemente da latência, com a seguinte exceção: o log de mensagens de entrada lentas do oplog pelos secundários. Os secundários registram apenas as entradas lentas do oplog. Aumentar logLevel não registra todas as entradas do oplog.

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

sampleRate
double

Opcional. Padrão: 1.0

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

Esse argumento afeta a mesma configuração da opção de configuração operationProfiling.slowOpSampleRate e não afeta as mensagens de log de entrada lenta do oplog em secundários.

filter
objeto

Opcional. Uma query que determina quais operações são perfiladas ou registradas.

A query de filtro recebe o seguinte formulário:

{ <field1>: <expression1>, ... }

A query pode ser qualquer operação find() legal em que a query <field> corresponda a um campo na saída do profiler.

Este argumento afeta a mesma configuração que a opção de configuração operationProfiling.filter. Quando filter está definido, as opções slowms e sampleRate não são utilizadas para perfis e linhas de registro de query lenta.

Os métodos de shell db.getProfilingStatus() e db.setProfilingLevel() fornecem envoltórios em torno do comando profile.

O comando profile obtém um bloqueio de gravação no banco de dados afetado enquanto habilita ou desabilita o profiler. Normalmente, essa é uma operação curta. A trava bloqueia outras operações até que o comando profile seja concluído.

Quando conectado a um cluster fragmentado por meio de mongos, é possível executar o comando profile em qualquer banco de dados.

Dica

Veja também:

Para habilitar o perfil e filtrar os dados registrados:

db.runCommand(
{
profile: 1,
filter:
{
$or:
[
{ millis: { $gte: 100 } },
{ user: "testuser@admin" }
]
}
}
)

O filtro seleciona apenas as operações que são:

  • pelo menos 100 milissegundos de duração, ou

  • enviado pelo testuser.

Para limpar um filtro de perfil, execute profile com a opção filter: "unset".

db.runCommand(
{
profile: 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().

Voltar

Ping