Tunning JVM 
Dos Comandos às 
configurações 
JSummit 2014 SP - Luan Cestari 
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 REFL...
Introdução | Batepapo 
http://slidesha.re/ZNZvg4 @BR_LuanCestari
O que veremos 
● Overview sobre desempenho 
● Comandos para troubleshooting e 
desempenho 
● Hints de desempenho 
http://s...
O que NÃO veremos (infelizmente) 
● Um workshop com hands on por causa do 
tempo =( 
○ Mas vou deixar slides online e pode...
Vamos falar de OpenJDK 
● JVM open source usada por outras JVMs 
○ Veja também: 
■ JCP (Java Community Process) 
■ JSR (Ja...
Desempenho 
● Menor Tempo de resposta / Latência 
● Maior Volume de dados processados / 
Throughput 
http://slidesha.re/ZN...
Desempenho | Latência 
● Latência baixa significa que as threads da 
sua aplicação estarão sempre disponíveis e 
não parad...
Desempenho | Throughput 
● O outro caso é o Throughput, onde as 
threads podem variar entre estarem 
processando informaçõ...
Desempenho | Como medir? 
● Tempo de resposta do cliente 
● Logs 
○ Erros de memória 
■ OutOfMemoryError, Leaks, GC, crash...
Arquitetura de memória OpenJDK 
Metaspace 
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 
...
Tunning e Profiling 
● Top-Down / Bottom-Up 
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Bottom-up 
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Bottom-up 
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Tunning e Profiling| Bottom-up 
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 d...
Tunning e Profiling| Top-Down 
● Codigo 
○ JVM consegue melhorar, ex 
■ String ex = a + b 
■ vira -> String ex = new Strin...
Demo 
● Cruzem os dedos =) 
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Futuro 
● Twitter, Azul e Google ferramentas de 
profiling 
○ Baixíssimo uso de CPU e memory footprint 
○ Triggers 
○ Samp...
Muito Obrigado! 
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Dúvidas? 
http://slidesha.re/1kQU0Yg 
@BR_LuanCestari 
http://slidesha.re/ZNZvg4 @BR_LuanCestari
Próximos SlideShares
Carregando em…5
×

Tunning da jvm dos comandos às configurações

483 visualizações

Publicada em

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-zxuau2UHoOjvpe9hjA

Publicada em: Internet
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
483
No SlideShare
0
A partir de incorporações
0
Número de incorporações
14
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tunning da jvm dos comandos às configurações

  1. 1. Tunning JVM Dos Comandos às configurações JSummit 2014 SP - Luan Cestari http://slidesha.re/ZNZvg4 @BR_LuanCestari
  2. 2. 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. http://slidesha.re/ZNZvg4 @BR_LuanCestari
  3. 3. Introdução | Batepapo http://slidesha.re/ZNZvg4 @BR_LuanCestari
  4. 4. O que veremos ● Overview sobre desempenho ● Comandos para troubleshooting e desempenho ● Hints de desempenho http://slidesha.re/ZNZvg4 @BR_LuanCestari
  5. 5. 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 =) http://slidesha.re/ZNZvg4 @BR_LuanCestari
  6. 6. 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 http://slidesha.re/ZNZvg4 @BR_LuanCestari
  7. 7. Desempenho ● Menor Tempo de resposta / Latência ● Maior Volume de dados processados / Throughput http://slidesha.re/ZNZvg4 @BR_LuanCestari
  8. 8. 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 http://slidesha.re/ZNZvg4 @BR_LuanCestari
  9. 9. 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) http://slidesha.re/ZNZvg4 @BR_LuanCestari
  10. 10. 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 http://slidesha.re/ZNZvg4 @BR_LuanCestari
  11. 11. Arquitetura de memória OpenJDK Metaspace http://slidesha.re/ZNZvg4 @BR_LuanCestari
  12. 12. 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) http://slidesha.re/ZNZvg4 @BR_LuanCestari
  13. 13. Tunning e Profiling ● Top-Down / Bottom-Up http://slidesha.re/ZNZvg4 @BR_LuanCestari
  14. 14. Tunning e Profiling| Bottom-up http://slidesha.re/ZNZvg4 @BR_LuanCestari
  15. 15. Tunning e Profiling| Bottom-up http://slidesha.re/ZNZvg4 @BR_LuanCestari
  16. 16. Tunning e Profiling| Bottom-up http://slidesha.re/ZNZvg4 @BR_LuanCestari
  17. 17. 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 http://slidesha.re/ZNZvg4 @BR_LuanCestari ) ■ 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
  18. 18. 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 http://slidesha.re/ZNZvg4 @BR_LuanCestari
  19. 19. Demo ● Cruzem os dedos =) http://slidesha.re/ZNZvg4 @BR_LuanCestari
  20. 20. Futuro ● Twitter, Azul e Google ferramentas de profiling ○ Baixíssimo uso de CPU e memory footprint ○ Triggers ○ Sample e contínuo ○ etc http://slidesha.re/ZNZvg4 @BR_LuanCestari
  21. 21. Muito Obrigado! http://slidesha.re/ZNZvg4 @BR_LuanCestari
  22. 22. Dúvidas? http://slidesha.re/1kQU0Yg @BR_LuanCestari http://slidesha.re/ZNZvg4 @BR_LuanCestari

×