Devo desativar desativar o gerador de perfis MongoDB na máquina de produção?

3

O padrão de acordo com [1] é coletar dados do perfil quando o tempo de execução > 100 ms

Mas um dos problemas é quando a maioria do tempo de execução das consultas > 100ms, o nosso sistema começa a sobrecarregar e não tenho a certeza se o profiler torna o nosso sistema ainda mais ocupado.

Estou pensando em desabilitar ou definir um valor grande, por exemplo 2 segundos. Parece que o padrão de 100ms é muito pequeno?

[1] link

    
por Ryan 20.04.2013 / 18:52

2 respostas

5

Primeiro, o criador de perfil está desativado por padrão. Consultas lentas (por padrão, qualquer consulta que tome mais de 100ms, como você mencionou) serão registradas no log do MongoDB, mas isso não é o mesmo que o profiler e não ocupará muitos recursos (basicamente é apenas escrever uma linha de texto para um arquivo fora do DB, sem travamento etc.). Geralmente é seguro deixar isso como está e os benefícios de localizar consultas lentas geralmente superam em muito o lado negativo de ter um arquivo de log maior.

Segundo, quando o criador de perfil é ativado, ele grava todos os dados que coleta na coleção system.profile . No nível padrão de 0, ele é desabilitado, no nível 1, ele registrará todas as operações "lentas" com base no mesmo limite e, no nível 2, todas as operações serão registradas, independentemente da velocidade.

Como você pode imaginar, tê-lo configurado para 2 é muito intensivo em recursos - você dobraria seu volume de gravação e adicionaria uma gravação para cada leitura. Dependendo da sua carga de trabalho, um nível de 1 também pode ser intensivo. Em geral, eu recomendaria o profiler apenas sob circunstâncias controladas (janela de manutenção, depuração, ambiente de desenvolvimento / QA).

Embora você possa considerar os dois métodos de gravação de operações lentas como completamente sepearate, atualmente, o slowms afetará os dois métodos em termos do que é considerado uma consulta lenta.

Portanto, se você definir o valor mais alto (2 segundos), diminuirá a quantidade de operações gravadas no seu log. A desvantagem disso é que você perderá todas as operações que estão ocupando esse tempo, geralmente consideradas uma eternidade em termos de banco de dados modernos. O valor de 100ms geralmente é um bom começo, e eu até vi pessoas abaixando-o com base em seus requisitos de aplicação em termos de tempos limite, mas é raro aumentar o valor.

    
por 21.06.2013 / 17:39
0

O profiler usa recursos do mongodb! Tem que cronometrar a consulta e escrevê-la no mongodb.log.

Se você não precisa de nada, pode desativá-lo com segurança.

    
por 20.04.2013 / 19:19

Tags