34
Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

Performance Java

  • Upload
    kawena

  • View
    36

  • Download
    0

Embed Size (px)

DESCRIPTION

Performance Java. Flávia Falcão | fmcf2 @c in . ufpe .br. Roteiro. Motivação Objetivos Garbage Collection Parser Codificação Java Conclusao Referencias. Motivação. Web está em todo lugar : E-marketplaces E-comerce B2B automatizado Interegracao de processos de negocio na web - PowerPoint PPT Presentation

Citation preview

Page 1: Performance Java

Performance Java

Flávia Falcão | [email protected]

Page 2: Performance Java

Roteiro

• Motivação• Objetivos• Garbage Collection• Parser• Codificação Java• Conclusao• Referencias

Page 3: Performance Java

Motivação

• Web está em todo lugar :– E-marketplaces– E-comerce B2B automatizado – Interegracao de processos de negocio na web – Compartilahamento de recursos , computacao distribuida

• Necessidade de plataforma que permita interações aplicação-a-aplicação sistemática na web :

– Foco Tecnologia web services, escopo é o projeto CENAS

Problema : A performance dessas aplicaçõesProblema : A performance dessas aplicações

Page 4: Performance Java

• Identificar os fatores que influenciam o desempenho das aplicações j2ee e web services• JVM Tunning• XML Parser

• Boas práticas para codificação de aplicações em JAVA, com ênfase em WebServices

Objetivos

Page 5: Performance Java

Garbage Collection

• A performance de uma aplicação está intimamente ligada ao custo da alocação e desalocação de memória. Se uma aplicação usa uma quantidade de memória tal que força o sistema operacional a usar memória virtual, esta aplicação sofrerá um impacto na performance

Page 6: Performance Java

Tempo de Vida dos Objetos

• A maioria dos objetos tem um curto tempo de vida:– 80-98% dos objetos alocados morrem em menos de poucos milhões de instruções.– 80-98% dos objetos alocados morrem antes de outro megabyte ter sido alocado.

• Isto tem grande impacto da escolha do algoritmo de Garbage Collection• Definir o perfil de execução de uma aplicação, Isso é difícil !!!

Page 7: Performance Java

Generacional GC

• Divide a heap em múltiplas áreas ( gerações) – Objetos segregados por idade– Objetos novos morrem mais frequentemente,GC mais freqüente– Em Gerações mais velhas as coletas são menos freqüentes– Diferentes gerações usam diferentes algoritmos

Page 8: Performance Java

Maquina Virtual JAVA

• A HotSpot VM otimiza o gerenciamento de memória por idades (generational).

• O heap da maquina virtual é dividida em young generation e old gereration e permanent generation de acordo com a idade do objeto

Page 9: Performance Java

Maquina Virtual JAVA

• Na Young generation estão os objetos considerados com tempo de curto relativo a um intervalo de coletas.

• A young generation é dividida em 3 espacos : – um eden – dois espaços “Survivor”(to-space e from-space).– As alocações acontecem do eden para o from-space.Quando estes estão preenchidos

a coleta na Young generation é feita. – Geralmente a young generation é muito menor em relação ao tamanho da heap.Isto

leva a pequenas mas freqüentes pausas na young generation durante a execução do garbage collection.

Page 10: Performance Java

Maquina Virtual JAVA

• Objetos que sobreviventes a um determinado numero de coletas são movidos(promovidos) para a old generation.

• A old generation é geralmente maior em relação a Young o que leva a pausas maiores e menos freqüentes .

• A permanent generation é usada para armazenar classes de objetos e meta dados relacionados.

Page 11: Performance Java

Maquina Virtual JAVA

Page 12: Performance Java

Maquina Virtual JAVA

• Parâmetros da JVM

• -XX:NewSize• -XX:MaxNewSize• -XX:SurvivorRatio

• Automaticamente– XX:+UseAdaptativeSize

Page 13: Performance Java

Maquina Virtual JAVA

• Como exemplo, para uma Yung generation com 128Mb, Eden de 64Mb, Semi-Space 32MB, Os parametros devem ser

java -Xms512m -Xmx512m \-XX:NewSize=128m -XX:MaxNewSize=128m \

-XX:SurvivorRatio=2 application

Page 14: Performance Java

Maquina Virtual JAVA

A otimização da utilização destas áreas juntamente com a escolha correta do algorítimo do garbage collector pode gerar um aumento de performance considerável

Page 15: Performance Java

Maquina Virtual JAVA

• Nas J2Ses o algoritmo default da Young generation é o copyng collector já na old generation o algoritmo padrão é o mark-compact collector.

Page 16: Performance Java

Maquina Virtual JAVAAlgorítimos• Parallel Collector que é implementado na young generation.Este Coletor usa a

versão paralela da young generation coletor.(copyng colector). Deve ser usado quando se deseja melhorar o desempenho da aplicação em maquinas com vários processadores.

– -XX:+UseParNewGC , -XX:+UseParallelGC, - XX:ParallelGCThreads=n

Page 17: Performance Java

Maquina Virtual JAVAAlgorítimos• Concurrent mark sweep Collector é implementado na old generation.Tenta

minimizar as pausas fazendo a maioria da coleta simultaneamente com as threads da aplicação .

– -XX :UseConcMarkSweepGC

Page 18: Performance Java

Fatores que afetam o GC

• Taxa de objetos criados• Vida dos objetos

– Temporários,intermediários,longos

• Tipo do objeto– Tamanho, complexidade

• Relacionamento entre objetos– Dificuldade de determinar e traçar as referencias dos objetos

Page 19: Performance Java

Atividades Realizadas

• Analisar os principais algoritmos geracionais do garbage Collection da jvm 1.4.2

– Copyng GC– Mark sweep GC– Parallel GC– Concurrent mark sweep GC– Incremental GC

• Mecanismos disponiveis para otimizar seu desempenho – Analise do comportamento da Heap da jvm

Page 20: Performance Java

Cases

1

Page 21: Performance Java

Cases

• Teste com a aplicação J2EE PetStore• Desafios

– Analisar o comportamento dos algorítimos e mensurar a performance deles em maquinas multiprocessadas

– Realizar um estudo sobre dimensionamento do HEAP

Page 22: Performance Java

Cases

0

2000

4000

6000

8000

10000

12000

14000

16000

1 2 4 6 8 10 12 14 16 18 20

Numero de Usuarios

Re

qu

isiç

õe

s R

es

po

nd

ida

s

Default

NewParGC

ParallelGC

ConcMarkSweep

Page 23: Performance Java

Cases

0

2000

4000

6000

8000

10000

12000

14000

16000

2 3 4 5 8 14 20

New Ratio

Req

uis

ico

es

Requests

0

2000

4000

6000

8000

10000

12000

14000

16000

2 3 4 5 8 14 20

New Ratio

Req

uis

ico

es

Requests

0

2000

4000

6000

8000

10000

12000

14000

16000

2 3 4 5 8

newSurvivorre

qu

isic

oes

requests

Page 24: Performance Java

Web services : Problemas

• XML é o coração da tecnologia web services. • Problemas :

– Tamanho dos arquivos xml– Marshalling e un-marshaling– Tipo de dado – Transmissao de mensagens SOAP– Validação

Page 25: Performance Java

Marshalling e Un-marshaling :Parser XML • O tempo de conversão de documentos XML durante o processo de

comunicação, pode significar um grande gargalo no sistema quando se refere à performance do envio e recebimento de um serviço.

Page 26: Performance Java

Case

• Testes realizados com Parsers Xml/Java de diferentes fabricantes.• Desafios:

– Realizar testes em aplicação analisando o comportamento de cada um dos parsers– Mensurar e comparar o desempenho deles

Page 27: Performance Java

Case

Page 28: Performance Java

• A maneira com que se escreve um código pode ter um impacto no desempenho de um sistema.

• Inúmeros partes similares de código podem ter desempenhos radicalmente diferentes.. Como os que seguem…

Codificação Java

Page 29: Performance Java

Exemplos (1)

• Concatenação de strings

String str = “teste” + “já” + “va”;

internamente é :

String str = new StringBuffer().append(“teste”).append(“ja”).append(“va”).toString();

Page 30: Performance Java

JSP

Page 31: Performance Java

Servlets

Page 32: Performance Java

Web Services

Page 33: Performance Java

Referencias

Page 34: Performance Java

Perguntas?