Usamos cookies essenciais para login e armazenamento local para suas preferências. Para métricas de uso, usamos o Google Analytics 4 — você pode recusar sem perder nada do produto. Saber mais

ThreadMineThreadMine
Voltar

Playground · comparação de dumps

Antes e depois de um fix real: veja o delta

Um serviço Java com deadlock e pool de conexões esgotado — e o mesmo serviço depois do fix. Compare os dois dumps lado a lado, sem login.

Criar conta grátis
QuebradoSaudável
28
Antes · deadlock · pool esgotado
+61
Δ health score
88
Depois · pool limitado · sem bloqueio

Dados reais: dois dumps do mesmo serviço, diff calculado pelo mesmo motor do produto.

Diagnóstico da mudança

Score subiu 64 pontos.

✓ POOL_EXAURIDO resolvido (5 threads)🔥 http-nio-8080-exec-1 -7.0s CPU

O delta em detalhe

Top ofensores

Liberaram CPU em B

Consumiram mais em B

Contadores

Total
10100
Runnable
15+4
Blocked
50-5
Waiting
30-3
TimedWaiting
15+4
Daemon
000
HealthScore
2892+64

Diff thread a thread

ms
Diff de threads entre as análises A e B
CategoriaEstado A → BFlags
http-nio-8080-exec-1ALTERADABLOCKED RUNNABLE-7000ms
http-nio-8080-exec-3ALTERADABLOCKED RUNNABLE-7000ms
http-nio-8080-exec-2ALTERADABLOCKED TIMED_WAITING-6700ms
http-nio-8080-exec-4ALTERADAWAITING TIMED_WAITING-4600ms
http-nio-8080-exec-5ALTERADAWAITING TIMED_WAITING-4340ms
estoque-tx-workerALTERADABLOCKED RUNNABLE20ms
pedido-tx-workerALTERADABLOCKED RUNNABLE20ms
mainALTERADARUNNABLE RUNNABLE10ms
HikariPool-1 connection adderALTERADAWAITING TIMED_WAITING5ms
scheduling-1ALTERADATIMED_WAITING TIMED_WAITING5ms

Esta página é uma demonstração ao vivo — sem login — do recurso mais raro de um analisador de thread dumps: a comparação antes/depois de um fix. O bloco acima já mostra o essencial: um serviço Java que estava em health score 28 e, depois de uma correção, foi para 92. Abaixo você explora o diff completo que gerou esse número.

O cenário: pool esgotado + deadlock

O par de dumps é de um pedido-service típico em Spring Boot com Tomcat e HikariCP. No dump de antes, o serviço está travado por dois problemas simultâneos:

  • Pool de conexões esgotado. As cinco threads http-nio-8080-exec-* estão BLOCKED/WAITING dentro de HikariPool.getConnection, parkadas além do connectionTimeout — acumulando milhares de ms de CPU sem progredir.
  • Deadlock. pedido-tx-worker e estoque-tx-worker entraram em espera circular por dois monitores adquiridos em ordem invertida (CRITICAL).

No dump de depois — mesmo serviço, após limitar o pool e impor uma ordem global de locks — os dois problemas desaparecem: as threads do pool voltam a RUNNABLE/TIMED_WAITING e o deadlock some. Nada de novo aparece. É a assinatura de um fix que pegou.

Como ler o delta

A leitura vai do topo para baixo, do resumo ao detalhe:

  • Health score. 28 → 92. O número único que responde "melhorou ou piorou?" antes de qualquer leitura de stack.
  • Diagnóstico. O veredito verde e os drivers ("problema resolvido") resumem, em uma linha, o que puxou o score para cima.
  • Contadores e problemas. BLOCKED 5 → 0, os problemas CRITICAL que sumiram, e as threads que mais liberaram CPU.
  • Diff thread a thread. Cada thread pareada, com a transição de estado (ex: BLOCKED → RUNNABLE) e o delta de CPU. Filtre por categoria, por mudança de estado ou por CPU liberada.

Por que comparar dois dumps

Um dump isolado responde "o que está acontecendo agora?". Comparar dois responde a pergunta que realmente importa depois de uma mudança: "o que mudou?". É o que você quer saber ao validar um hotfix em produção, ao investigar uma regressão entre dois deploys, ou ao entender por que a latência subiu entre o pico das 14h e o das 15h. Ler dois dumps grandes em paralelo, à mão, é lento e propenso a erro; o diff mostra só o delta.

Como o ThreadMine compara

O ThreadMine pareia as threads dos dois dumps por nome e calcula, para cada uma, as mudanças de estado, de locks (esperado/detido), de CPU e de stack (via hash dos frames do topo). Agrega os contadores por estado, cruza os problemas detectados (o que apareceu em B, o que sumiu de A, o que mudou de severidade) e deriva um veredito com os principais drivers da mudança. Nos planos com IA, o Vein ainda escreve um parecer sobre a causa provável da diferença.

O diff desta demo foi calculado exatamente pelo mesmo motor — a diferença é que aqui os dois dumps são um exemplo fixo, servido estático. Com uma conta gratuita você faz o mesmo com os seus.

Perguntas frequentes

O que significa comparar dois thread dumps?

É pegar um dump de antes de uma mudança (um fix, um deploy, um pico de carga) e um de depois, e cruzar thread a thread: quais mudaram de estado, quais apareceram ou sumiram, quanto de CPU cada uma passou a consumir e quais problemas (deadlock, pool esgotado, contention) apareceram ou foram resolvidos. Em vez de ler dois dumps de 900 linhas em paralelo, você vê só o que mudou — e um health score de cada lado para saber, num número, se a situação melhorou ou piorou.

Como sei se um fix realmente resolveu o problema?

Comparando o dump de antes com o de depois. No exemplo desta página, o serviço tinha health score 28 (deadlock CRITICAL + pool HikariCP esgotado, cinco threads http-nio bloqueadas aguardando conexão) e, após limitar o pool e impor ordem global de locks, subiu para 92: nenhum problema bloqueante, as threads do pool liberaram milhares de milissegundos de CPU e voltaram a RUNNABLE/TIMED_WAITING. O delta de +64 no health score e a lista de problemas resolvidos são a evidência objetiva de que o fix pegou.

Preciso de conta para comparar dumps?

Esta demo é pública e não pede login — é um par fixo de dumps de exemplo. Para comparar os SEUS próprios dumps (com diff de stack por thread e diagnóstico da IA Vein sobre a mudança), aí sim é preciso uma conta gratuita: você sobe os dois dumps e o ThreadMine calcula o diff completo.

Comparação de dumps é um recurso pago?

Ferramentas tradicionais escondem a comparação atrás do plano Enterprise. No ThreadMine a comparação lado a lado está disponível já no plano gratuito; o que os planos pagos adicionam é a camada de IA (Vein) explicando a causa da mudança e o histórico de comparações do workspace.

Compare os seus próprios dumps

Suba o dump de antes e o de depois. O ThreadMine mostra o que mudou — estado, locks, CPU e problemas — em segundos.