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
Performance Java
Flávia Falcão | [email protected]
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 – 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
• 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
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
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 !!!
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
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
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.
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.
Maquina Virtual JAVA
Maquina Virtual JAVA
• Parâmetros da JVM
• -XX:NewSize• -XX:MaxNewSize• -XX:SurvivorRatio
• Automaticamente– XX:+UseAdaptativeSize
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
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
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.
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
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
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
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
Cases
1
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
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
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
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
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.
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
Case
• 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
Exemplos (1)
• Concatenação de strings
String str = “teste” + “já” + “va”;
internamente é :
String str = new StringBuffer().append(“teste”).append(“ja”).append(“va”).toString();
JSP
Servlets
Web Services
Referencias
Perguntas?