Tunning da jvm dos comandos às configurações

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

×