APM (Application Performance Management) é uma ferramenta essencial para ajudar a otimizar e monitorar o desempenho de seus aplicativos. Mais do que monitorar o desempenho de sua aplicação a APM trata de entender o “porquê”, que ajudará o time de desenvolvimento identificar a causa raiz de forma mais eficiente.
A ideia é mostrar a combinação de Java Fligth Recorder e Java Mission Control para monitorar e ajudar otimizar o desempenho de aplicações Java.
Palestra apresentada no evento: Open Source Roadshow 2020 - Campinas-SP
2. ● Application Performance Management
○ Ferramentas que ajudam monitorar o desempenho das aplicações
○ Métricas
○ Desempenho a nível de código
● A APM trata de entender o “porquê” o mais rápido possível
○ Gaps
○ Gargalos
○ Causa raiz
5. ● Performance
○ Monitoramento de aplicações Java
■ Tempo de Desenvolvimento / Teste
■ Produção é uma outra licença - comercial
● Problemas intermitentes
6. ● Armazena Informações do processamento JVM
● Gravação por amostragem
● Baixo impacto no desempenho - de 1% a 2%
● Está embutida no JDK ( Java Development Kit)
● Disponível à partir da versão Oracle JDK 7u40+, 8+
OpenJDK11
7. ● Java Virtual Machine
○ Máquina virtual
● Java Virtual Machine é mais que um interpretador de código
● Responsável pela execução das pilhas
● Gerência memória, threads e etc.
● É um “computador virtual”.
● Trabalha com Garbage Collector,é uma thread responsável
pela “limpeza” da memória virtual (quando existe muito “lixo”)
8. ● Interface gráfica para análise dos dados
● Também já vem embutido no JDK ( Java Development Kit)
● Permite habilitarcontrolar o Java Fligth Recorder através de
uma interface
● Utiliza JMX para obter as informações da execução na JVM
● Disponível à partir da versão Oracle JDK 7u40+, 8+
Java Mission Control 5.x
Para OpenJDK11 o Java Mission Control 7.x
9.
10.
11. jcmd Lista todos os processos java, com isso pode-se obter o pid
java
-XX:+UnlockComercialFeatures
-XX:+FligthRecorder MyApp
Flags para habilitar na execução da aplicação
jcmd pid
VM.unlock_commercial_features
Liberar para gravação
jcmd pid JFR.start inicia gravação
jcmd pid JFR.check Lista as gravações correntes
jcmd pid JFR.stop Para uma gravação
jcmd pid JFR.dump
Grava arquivo enquanto continua
com a gravação.
○ https://docs.oracle.com/javacomponents/jmc-5-5/jfr-command-reference/diagnostic-command-reference.htm
12. jcmd $pid JFR.start
name=testeJFR maxage=10m
maxsize=200M settings=profile
filename=/tmp/JFR/testeJFR.jfr
dumponexit=true
Irá iniciar uma gravação contínua que terá no máximo
200 MB e 10 minutos. Caso algum imprevisto aconteça e
a JVM seja finalizada o arquivo também será gravado.
Pela documentação 2% de overhead na opção
settings=profile e 1% para default
jcmd $pid JFR.dump
name=testeJFR
filename=/tmp/JFR/testeJFR.jfr
Quando ocorrer o problema faça o dump para poder
analisar o problema
jcmd $pid JFR.stop
name=testeJFR
filename=/tmp/JFR/testeJFR.jfr
Quando quiser parar com a gravação
13.
14. General
Overview: Heap e CPU
JVM Information
System Properties
Recording
Memory
Overview: Uso de memória e GC*
Garbage Collection
GC Times
GC Configuration
Allocations
Object Statics
15. Code
Overview: Packages que gastaram mais tempo de
execução
Hot Methods
Call tree
Exceptions
Compilations
Class Loading
Threads
Overview: Uso de CPU e quantidade de Threads
Hot Threads
Contention
Latencies
Thread Dumps
Lock Instances
16. IO
Overview: Total de arquivossockets lidos e escritos
File Read
File Write
Socket Read
Socket Write
Systems
Overview: Informações do sistema - Verificar uso de CPU
interna e externa
Processes
Environment Variables
Events
Overview: Resumo das atividades por evento
Log
Graph
Threads
Stack Traces
Histogram
17.
18. ● APM: https://guilhermeteles.com.br/o-que-e-application-performance-management/
● Webinar: Open Source Fligt Recorder and Mission Control: Managing and Measuring JDK
8 Performance
https://www.azul.com/presentation/azul-webinar-open-source-flight-recorder-and-mission-control-managi
ng-and-measuring-openjdk-8-performance/
● Webinar PROFILE DE APLICAÇÕES JAVA COM ORACLE MISSION CONTROL E FLIGHT
RECORDER: https://www.youtube.com/watch?v=ZfIg_lyhw38
● Junior Predes - Arquiteto na Matera Systems:
https://www.linkedin.com/in/juniorpredes/
19. ● Explicação de todas as abas do Java Mission Control:
https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/mc-jfr/index.html
● Guia do Java Mission Control:
https://docs.oracle.com/javacomponents/jmc-5-5/jmc-user-guide/preface_jmcci.htm#JMCCI140
● Guia do Java Flight Recorder:
https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm#JFRUH170
● ASH Viwer:
https://timurakhmadeev.wordpress.com/2010/02/18/ash-viewer/
20. Analista de Testes
Há 12 anos
Ariane Izac
Matera Systems
Há 7 anos
Blogueira
Grupo no LinkedIN
Diário de uma Paixão:
Teste de Software
CONTATOS
Ariane Izac afizac@gmail.com @arianizac