Performance Java Flávia Falcão | [email protected].
-
Upload
victoria-pando -
Category
Documents
-
view
215 -
download
1
Transcript of Performance Java Flávia Falcão | [email protected].
![Page 2: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/2.jpg)
Roteiro• Motivação• Objetivos• Garbage Collection• Parser• Codificação Java• Conclusao• Referencias
![Page 3: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/3.jpg)
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, web services, escopo é o projeto CENAS escopo é o projeto CENAS
Problema : A performance dessas aplicaçõesProblema : A performance dessas aplicações
![Page 4: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/4.jpg)
• 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 Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/5.jpg)
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 Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/6.jpg)
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 Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/7.jpg)
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 Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/8.jpg)
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 9: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/9.jpg)
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 10: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/10.jpg)
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 11: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/11.jpg)
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 12: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/12.jpg)
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 13: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/13.jpg)
Maquina Virtual JAVA
![Page 14: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/14.jpg)
Maquina Virtual JAVA• Parâmetros da JVM
• -XX:NewSize• -XX:MaxNewSize• -XX:SurvivorRatio
• Automaticamente– XX:+UseAdaptativeSize
![Page 15: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/15.jpg)
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 16: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/16.jpg)
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 17: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/17.jpg)
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 18: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/18.jpg)
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 19: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/19.jpg)
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 20: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/20.jpg)
Cases
1
![Page 21: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/21.jpg)
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 Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/22.jpg)
Cases
0
2000
4000
6000
8000
10000
12000
14000
16000
1 2 4 6 8 10 12 14 16 18 20
Numero de Usuarios
Req
uisi
ções
Res
pond
idas
Default
NewParGC
ParallelGC
ConcMarkSweep
![Page 23: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/23.jpg)
Cases
0
2000400060008000
100001200014000
16000
2 3 4 5 8 14 20
New Ratio
Requ
isic
oes
Requests
0
20004000
60008000
100001200014000
16000
2 3 4 5 8 14 20
New Ratio
Requ
isic
oes
Requests
0
2000
4000
6000
8000
10000
12000
14000
16000
2 3 4 5 8
newSurvivorre
quis
icoe
s
requests
![Page 24: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/24.jpg)
Cases
2
![Page 25: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/25.jpg)
Cases• Testes na aplicação portal consul• Desafios
– Realizar testes na aplicação do desenvolvida pelo CESAR analisando• Variação do servidor de aplicação• Variação da JVM• Utilização de macanismos de cache
![Page 26: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/26.jpg)
CasesRequisições atendidas x Versão da JVM
05
10152025303540
5 10 15 20 25 30 35
Número de usuários
Requ
isiç
ões
aten
dida
s
JVM 1.3
JVM 1.4
![Page 27: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/27.jpg)
Cases
0
5
10
15
20
25
30
35
40
5 10 15 20 25 30 35
Websphere 4.0 Tomcat
![Page 28: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/28.jpg)
Cases
0
50
100
150
200
250
300
350
5 10 15 20 25 30 35
Usuários simultâneos
Requ
ests
/seg
websphere 4.0 Tomcat sem alteração Tomcat + Cache
![Page 29: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/29.jpg)
Cases
3
![Page 30: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/30.jpg)
Cases• Testes na aplicação da Meantime para a globo.com• Desafios
– A aplicação deveria ser capaz de atender 350.000 requisições em 1 hora (97.2 req/seg)
– A equipe do projeot partiu das premissas:• Popar o SGBD ($$$$$)• Maximizar Cache
![Page 31: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/31.jpg)
Cases
Users Requests/Seg10 USERS 10 MINUTOS 108.1320 USERS 10 MINUTOS 141.3120 USERS 1 HORA 2/3 VOTIND 1/3 SYNC 115.0520 USERS 1 HORA VOTING 118.64
![Page 32: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/32.jpg)
Case
![Page 33: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/33.jpg)
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 34: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/34.jpg)
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 35: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/35.jpg)
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 36: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/36.jpg)
Case
![Page 37: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/37.jpg)
• 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 38: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/38.jpg)
Exemplos (1)• Concatenação de strings
String str = “teste” + “já” + “va”;
internamente é :
String str = new StringBuffer().append(“teste”).append(“ja”).append(“va”)..toString();
![Page 39: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/39.jpg)
JSP
![Page 40: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/40.jpg)
Servlets
![Page 41: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/41.jpg)
Web Services
![Page 42: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/42.jpg)
Referencias
![Page 43: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/5706383f1a28abb8238f0c04/html5/thumbnails/43.jpg)
Perguntas?