tunning da jvm dos comandos às configurações
DESCRIPTION
Já ficou em dúvida porque o Java você tem que compilar e mesmo assim ele não gera código nativo? Sabia que não existe somente uma implementação de JVM? Gostaria de saber como funciona alguns comportamentos internos que a JVM executa por abaixo dos panos enquanto compila/roda seu código? Se você respondeu um sim para essa palestra ou se você está curioso em saber o que mais sobre o assunto, venha asistir essa palestra. Vamos ver isso e muito muitos detalhes de tuning que você pode fazer e até analisar sua aplicação java. https://docs.google.com/presentation/d/1v-uK-PHQKaPC6-zxuau2UHoOjvpe9hjATRANSCRIPT
![Page 1: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/1.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning JVMDos Comandos às
configurações
JSummit 2014 SP - Luan Cestari
![Page 2: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/2.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Ressalva/Disclaimer
● ESTA APRESENTAÇÃO REFLETE A OPINIÕES E PROPOSTAS PESSOAIS DO AUTOR SOBRE O TEMA, PODENDO NÃO REFLETIR NECESSARIAMENTE A OPINIÂO / PONTO DE VISTA DE QUAISQUER ORGANIZAÇÃO/EMPRESA LIGA OU NÃO COM O AUTOR
● THIS PRESENTATION REFLECTS AUTHOR'S PERSONAL OPINIONS AND IDEAS ON THE TOPIC AND MAY NOT REFLECT NECESSARILY THE OPINION/ VIEWPOINT OF ANY ORGANIZATION / COMPANY WITH/WITHOUT RELATIONSHIP WITH THE AUTHOR.
![Page 3: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/3.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Introdução | Batepapo
![Page 4: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/4.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
O que veremos
● Overview sobre desempenho● Comandos para troubleshooting e
desempenho● Hints de desempenho
![Page 5: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/5.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
O que NÃO veremos (infelizmente)
● Um workshop com hands on por causa do tempo =(○ Mas vou deixar slides online e podem me contactar
para conversamos =)
![Page 6: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/6.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Vamos falar de OpenJDK
● JVM open source usada por outras JVMs ○ Veja também:
■ JCP (Java Community Process)■ JSR (Java Specification Requests)■ JEP (JDK Enhancement Proposals)■ JUGs (comunidades) como SouJava■ Eventos, Meetups e afins
![Page 7: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/7.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Desempenho
● Menor Tempo de resposta / Latência● Maior Volume de dados processados /
Throughput
![Page 8: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/8.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Desempenho | Latência
● Latência baixa significa que as threads da sua aplicação estarão sempre disponíveis e não paradas por causa de alguma manutenção da própria JVM. Com isso sua aplicação respondera rápido sempre
● Exemplo○ Aplicacoes de acoes (High frequency trading)○ Streaming de dados (video conferencia)○ Aplicacoes de tempo real (Aparelho no aviao)○ Otimizacao de uma aplicacao web atingir um baixo
tempo de resposta para agradar o usuario
![Page 9: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/9.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Desempenho | Throughput
● O outro caso é o Throughput, onde as threads podem variar entre estarem processando informações ou fazendo manutenções na própria JVM (como GC)
● Exemplo○ Processos em Batch ○ Aplicações web de não tempo real ou com requisitos
não-funcionais relacionados a latências simples○ Backend (com a mesma ressalva anterior)
![Page 10: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/10.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Desempenho | Como medir?
● Tempo de resposta do cliente● Logs
○ Erros de memória■ OutOfMemoryError, Leaks, GC, crash
○ Uso de recursos ■ CPU, Disco, Rede, Banco de dados, etc
● Também temos outra saída: As ferramentas quem vem com o JDK
![Page 11: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/11.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Arquitetura de memória OpenJDK
Metaspace
![Page 12: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/12.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tuning de GC e etc | Parâmetros da JVM
● Visto na outra palestra sobre GC● Ajuste no tamanho, promocao, heuristica da
Heap○ Young (Eden and Survival spaces) and Old
■ Parallel,CMS,G1 Collectors○ -XX:MaxMetaspaceSize tamanho do Metaspace
● Thread stack○ -xss para mudar
● Outras ○ LargePages (-XX:LargePageSizeInBytes=4m )○ Muito mais http://jvm-options.tech.xebia.fr/? (lock,
cache,etc)
![Page 13: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/13.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling
● Top-Down / Bottom-Up
![Page 14: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/14.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Bottom-up
![Page 15: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/15.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Bottom-up
![Page 16: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/16.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Bottom-up
![Page 17: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/17.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Top-Down
● Mesma análise das versões anteriores○ Uso do jvisualvm / jconsole para análise○ Uso das memórias
■ GC Log (usando -verbosegc -XX:PrintGCDetails )
■ Frequência e tempo de GC■ Algoritmo de GC
○ Demais opções JVM○ Thread Dump (jstack)○ Heap Dump (jmap -dump ...)○ Etc○ Para profiling usam JVMTI (old JVMPI e JVMDI) e
JDI (alem de outras) e Graal
![Page 18: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/18.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Top-Down
● Codigo○ JVM consegue melhorar, ex
■ String ex = a + b■ vira -> String ex = new StringBuilder().append(a).
append(b).toString();○ Mas nem tudo
■ String ex2 = a.concat(b);○ Collections muito grandes vs Arrays
■ Exemplo mil inteiros:■ ArrayList<Integer> vs int[]~20k vs 4k
○ Cache○ Regular Expression
![Page 19: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/19.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Demo
● Cruzem os dedos =)
![Page 20: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/20.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Futuro
● Twitter, Azul e Google ferramentas de profiling○ Baixíssimo uso de CPU e memory footprint○ Triggers○ Sample e contínuo○ etc
![Page 21: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/21.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Muito Obrigado!
![Page 22: Tunning da jvm dos comandos às configurações](https://reader031.vdocuments.com.br/reader031/viewer/2022020207/558e6a1f1a28abf4658b4670/html5/thumbnails/22.jpg)
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Dúvidas?
http://slidesha.re/1kQU0Yg@BR_LuanCestari