performance java flávia falcão | [email protected]

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

Upload: victoria-pando

Post on 07-Apr-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

Performance Java

Flávia Falcão | [email protected]

Page 2: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

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

Page 3: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

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

• 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

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

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

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

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

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

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

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

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

Maquina Virtual JAVA

Page 14: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

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

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

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

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

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

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

Cases

1

Page 21: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

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

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

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

Cases

2

Page 25: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

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

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

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

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

Cases

3

Page 30: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

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

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

Case

Page 33: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

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

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

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

Case

Page 37: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

• 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

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

JSP

Page 40: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

Servlets

Page 41: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

Web Services

Page 42: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

Referencias

Page 43: Performance Java Flávia Falcão | fmcf2@cin.ufpe.br

Perguntas?