perfil
Definição
profile
Alterado na versão 5.0.
Para uma instância do
mongod
, o comando habilita, desabilita ou configura o analisador de banco de dados. O analisador captura e registra dados sobre o desempenho de operações de gravação, cursores e comandos de banco de dados em uma instânciamongod
em execução. Se o analisador 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 estiver2
, o log completo será habilitado no criador de perfil e nodiagnostic log
.No nível do perfil do banco de dados
1
, as seguintes configurações modificam tanto o perfil quanto odiagnostic log
:Se o nível do perfil do banco de dados for
0
, o perfil do banco de dados será desabilitado. No nível0
, 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 perfil de banco de dados em uma instânciamongos
porquemongos
não tem nenhuma coleção na qual o criador de perfil possa gravar.A partir do MongoDB 5.0, as alterações feitas no analisador de banco de dados
level
,slowms
,sampleRate
oufilter
usando o comandoprofile
oudb.setProfilingLevel()
método wrapper são registradas nolog file
.Em
mongos
, você pode definirprofile
nível para:0
para definirslowms
,sampleRate
efilter
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.
O comando
profile
tem a seguinte sintaxe:{ profile: <level>, slowms: <threshold>, sampleRate: <rate>, filter: <filter expression> } CampoTipoDescriçãoprofile
intConfigura o nível do perfil. Os seguintes níveis de analisador estão disponíveis:
NívelDescrição0
O analisador está desligado e não coleta dados. Este é o nível do analisador padrão.1
2
O analisador coleta dados para todas as operações.Como a criação de perfil não está disponível no
mongos
, o comandoprofile
não pode ser usado para definir o nível do perfil para um valor diferente de0
em uma instânciamongos
.slowms
intOpcional. Padrão: 100
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 como0
, o MongoDB registra operações lentas no log de diagnóstico a uma taxa determinada porslowOpSampleRate
.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. AumentarlogLevel
não registra todas as entradas do oplog.Observação
Este argumento afeta a mesma configuração que a opção de configuração
operationProfiling.slowOpThresholdMs
.sampleRate
doubleOpcional. Padrão: 1.0
The fraction of slow operations that should be profiled or logged.sampleRate
accepts values between 0 and 1, inclusive.Observação
Esse argumento afeta a mesma configuração que a opção de configuração
operationProfiling.slowOpSampleRate
e não afeta as mensagens de registro de entrada de oplog lentas em secundários (disponíveis a partir do MongoDB 4.2).Novidade na versão 3.6.
filter
objetoOpcional. 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.Observação
Este argumento afeta a mesma configuração que a opção de configuração
operationProfiling.filter
.Quando
filter
está definido, as opçõesslowms
esampleRate
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
.
Comportamento
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.
Exemplo
Habilitar filtragem
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, ouenviado pelo
testuser
.
Redefinir um filtro
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()
.