clinic.js — Monitoramento de aplicações TypeScript

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é clinic.js?

Clinic.js é um conjunto de ferramentas para monitoramento e criação de perfil de aplicações Node.js escritas em TypeScript. Ele permite que desenvolvedores identifiquem gargalos de desempenho, vazamentos de memória e problemas com o Event Loop. A biblioteca fornece relatórios visuais na forma de flamegraph, bubbleprof e heapprofiler.

Por que o monitoramento TypeScript é necessário?

TypeScript é compilado para JavaScript, mas no nível de execução é o mesmo Node.js. Sem monitoramento, é impossível entender por que a aplicação fica lenta sob carga. Clinic.js ajuda a:

  • Detectar funções lentas e operações assíncronas
  • Analisar o uso de memória
  • Otimizar o Event Loop (por exemplo, ao trabalhar com cálculos pesados)
  • Comparar o desempenho antes e depois da refatoração

Instalação

Instale o clinic.js globalmente via npm:

npm install -g clinic

Para usar em um projeto TypeScript, instale também os tipos:

npm install --save-dev @types/node

Funções principais

  • clinic doctor — diagnóstico geral da saúde da aplicação (Event Loop, memória, CPU)
  • clinic flame — criação de flame graph para análise da pilha de chamadas
  • clinic bubbleprof — visualização de operações assíncronas (promises, callbacks)
  • clinic heapprofiler — criação de perfil do heap para encontrar vazamentos de memória

Exemplo de uso com TypeScript

Suponha que você tenha uma aplicação Express com TypeScript. Execute-a com clinic doctor:

clinic doctor -- node dist/index.js

Após finalizar a execução (Ctrl+C), um relatório HTML será aberto. Exemplo de código para teste:

import express from 'express';const app = express();

app.get('/heavy', (req, res) => { const arr = []; for (let i = 0; i < 1e6; i++) { arr.push(Math.random()); } res.send('Done');});

app.listen(3000, () => console.log('Server running'));

Em seguida, coloque carga nele usando autocannon:

npx autocannon -c 10 -d 10 http://localhost:3000/heavy

O relatório mostrará que o loop está bloqueando o Event Loop.

Quando usar

  • Quando houver queda de desempenho em produção
  • Antes de escalar a aplicação
  • Ao refatorar trechos críticos de código
  • Para otimizar fluxos assíncronos (por exemplo, ao usar RxJS)

Conclusão

Clinic.js é uma ferramenta indispensável para qualquer desenvolvedor TypeScript que trabalhe com Node.js. Ele substitui o logging manual e ajuda a encontrar rapidamente problemas que não podem ser capturados no depurador.

Recommendations