No APM da New Relic, a página Node VMs fornece dados de tempo de execução úteis para resolução de problemas de desempenho e monitoramento da integridade do seu aplicativo.
one.newrelic.com > All capabilities > APM & services > (select an app) > Node VMs: quando vários servidores reportam para o mesmo aplicativo, a página divide os gráficos por servidor. Você pode visualizar dados de um servidor individual e obter detalhes adicionais selecionando um servidor no filtro Servers na parte superior da página.
Para correlacionar picos ou tendências ascendentes em qualquer uma dessas medidas com transações específicas:
À medida que você avança para outras páginas, a seleção do seletor de hora permanecerá a mesma.
Analise problemas de desempenho
Aqui está um resumo dos dados disponíveis em gráficos Node VMs individuais. Usando todos os gráficos juntos, você pode solucionar problemas de desempenho. Por exemplo:
Quando o aplicativo começar a usar mais objetos, o uso de memória aumentará e a coleta de lixo (GC) será executada com mais frequência. A utilização da CPU aumentará devido ao tempo gasto no GC.
A execução de código síncrono anormalmente longa pode aumentar a utilização da CPU. Isso mostrará picos no gráfico
Event loop max CPU time per tick
.
A quantidade de tempo gasto na coleta de lixo. Para um único servidor, o gráfico mostra o tempo médio, máximo e total por minuto. Para vários servidores, o gráfico mostra o tempo total agrupado por servidor.
Normalmente, picos no tempo ou frequência do GC indicam um possível problema.
O número de vezes que as execuções do GC foram executadas por minuto. Para um único servidor, o gráfico é dividido por tipo de GC. Para vários servidores, o gráfico mostra o número total de chamadas de GC (todos os tipos combinados) agrupadas por servidor.
Este gráfico mostra o tempo total gasto na coleta de lixo por minuto, dividido por tipo de GC. Só é mostrado ao visualizar um único servidor. Você poderá ver os seguintes tipos dependendo da sua versão do Node.js e da atividade do aplicativo:
Value
Description
Scavenge
O método de coleta de lixo mais comum. O Node.js normalmente acionará um deles sempre que a VM estiver ociosa.
MarkSweepCompact
O tipo mais pesado de coleta de lixo que o V8 pode fazer. Se você observar muitas dessas coisas acontecendo, precisará manter menos objetos em seu processo ou aumentar o limite de heap do V8.
IncrementalMarking
Uma coleta de lixo em fases que intercala a coleta com a lógica do aplicativo para reduzir o tempo que o aplicativo fica pausado. Somente no Node.js v6 ou superior.
ProcessWeakCallbacks
Após ocorrer uma coleta de lixo, o V8 chamará qualquer retorno de chamada de referência fraca registrado para objetos que foram liberados. Essa medida vai do início do primeiro retorno de chamada fraco até o final do último para uma determinada coleta de lixo. Somente no Node.js v6 ou superior.
Este gráfico mostra a quantidade de memória consumida pelo processo Node.js. Para vários servidores, o gráfico mostra a memória total agrupada por servidor. Para um único servidor, o gráfico é segmentado pelos seguintes tipos de memória:
Value
Description
Não heap
A memória alocada para dados fora do heap do V8 (por exemplo, buffers, soquetes).
Pilha V8 (usada)
A quantidade de memória usada pelo V8 (por exemplo, objetos JavaScript).
Pilha V8 (grátis)
A quantidade de memória reservada pela V8 para pool de memória. Essa memória não está sendo usada ativamente, mas é reservada para que o V8 aloque mais livremente conforme necessário.
Este gráfico mostra a utilização da CPU do processo Node.js.
Para vários servidores, o gráfico mostra a utilização total da CPU agrupada por servidor. Para um único servidor, o gráfico é segmentado pelo seguinte:
Value
Description
Usuário
O tempo gasto na execução do código do usuário, dividido pelo tempo transcorrido.
Sistema
O tempo gasto no kernel do sistema em nome do processo Node.js, dividido pelo tempo transcorrido.
Este gráfico mostra o número de ticks do loop de eventos por minuto. Um tick é uma única volta do loop de eventos, na qual são executadas funções que estão prontas para serem executadas.
Como parte de cada ciclo de evento, o Node.js aguarda a conclusão da E/S pendente. Assim que qualquer evento de E/S for recebido, o loop de eventos executa o retorno de chamada associado a ele. Portanto, o número de ticks por minuto corresponde à frequência com que os eventos de E/S ocorrem.
Este gráfico mostra o tempo máximo gasto em um único tick por minuto. Isso é útil para detectar um tique de loop de evento anormalmente longo, que indica uma longa execução de código síncrono.
Ver cluster de vários processos
Quando vários processos Node.js no mesmo servidor reportam para o mesmo aplicativo New Relic, esses gráficos mostrarão dados agregados. Isso ocorre porque cada processo de trabalho em um cluster tem seu próprio tempo de execução Node.js separado e coleta dados separados.
Clusters
Comments
Soma de todos os trabalhadores
Os gráficos a seguir mostram uma soma de todos os trabalhadores:
Tempo de pausa do GC - Tempo total por minuto
Frequência de pausa do GC
Tempo de pausa do GC por tipo
Utilização da CPU
Ciclos de eventos por minuto
Média de todos os trabalhadores
Os gráficos a seguir mostram uma média de todos os trabalhadores:
Uso de memória
Tempo de pausa do GC — média
Máximo em todos os trabalhadores
Os gráficos a seguir mostram o máximo em todos os trabalhadores: