Performance em Web Services em Plataforma Java Flávia Falcão - [email protected] Agenda Contexto Proposta Conceitos Estudos de Casos Trabalhos Futuros Conclusão Referências Contexto 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 : Tecnologia web services Problema : A performance dessas aplicações Proposta Identificar os problemas que afetam a performance de aplicacões web services Fornecer boas práticas e tecnicas que podem ser aplicadas para melhoria do desempenho destas aplicações Conceitos Web Services -Definição Um web services é qualquer serviço disponível na Internet que utilize um sistema de mensagens XML padronizado e não seja especifico de nenhum sistema operacional ou linguagem de programação. (Ethan Cerami – web services – Essentials) Web Services Principais Componentes: Descrição Serviço de Registros Mensagens SOAP Transporte sobre HTTP Problemas de Performance em web services O Maior Problema : XML 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 Problemas comuns Fatores comuns a outras aplicações web : Rede Garbage Collection Configurações da jvm Lógica da aplicacao Arquitetura do projeto Boas Práticas e Técnicas para otimizar a performance em web services Boas Praticas & Tecnicas Reduzir o tamanho do XML Uso de zip/gzip Softwares proprios de compressao Xml. Algortmos de compressão Uso de compressão binaria como WBXML e o ASN.1 Boas Praticas & Tecnicas Web Services Caching Utilizar Parser XML mais eficiente Não validar o arquivo xml Uso de tipos simples em mensagens XML Estudo de Caso: Garbage Collection Algoritmos de Garbage Collection 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 Testes Ambiente Sistema operacional Linux Jsdk 1.4.2 J2eesdk 1.3 Jmeter Apache Web Application Stress Tools Aplicação de referência : PetStore 1.3 Resultados A diferença de desempenho entre a maioria dos algoritmos geracionais foi pequena Porém o Algoritmo concurrent mark sweep apresentou uma melhora muito grande chegando a picos de 100%. Isso se deveu ao pequenho tamanho da heap,reduzindo a chamada ao garbage Algoritmo trabalhar bem em espaços maduros Estudo de Caso: Parser XML Parsers XML Os parsers XML são responsaveis pelo processamento de arquivos XML. A simples mudança pode prover significativos ganhos de desempenho,considerendo que web servces sao baseados em XML. Analise de varios fornecedores Parsers que implementam as APIs JAXP 1.0 Testes dos Parses XML Ambiente : Sistema Operacional Solaris Jmeter Apache JVM 1.4 da sun Java Application server 7 Aplicacao web services exemplo Parsers Utilizados , implementam a API JAXP 1.0: Xerces versao 1.4.4 Crinsom versao 1.1 Picollo versao 1.04 Gnu JAXP XP versao 1.0 Resultados Melhora de desempenho em torno de 5% com o parser xml Picollo versao 1.04 Observação : A Aplicação de teste foi muito simples Trabalhos Futuros Identificar os pontos exatos de deficiência em parsers : Construção de benchmark Utilizar modelos emergentes de XML binário : infoset Otimização de código java e xml Combinar técnicas Conclusão Metodologias em testes de cargas Analise de Resultados e busca das melhores alternativas Dois artigos submetidos ao JavaOne 2005 ( em processo de submissão) Performance = profile + profile ...... Referencias (1) Wilson ,Steve e Kesselman ,Jeff (2001) “Java TM Platform performance : Strategies and Tactics” .URL : http://java.sun.com/docs/books/performance/ Sun Microsystems(2003) .“Tuning Garbage Collection with the 1.4.2 Java TM Virtual Machine”.URL: http://java.sun.com/docs/hotspot/gc1.4.2/ Sun Microsystems(2002). “The Java HotSpot TM Virtual Machine ,v1.4.2, A technical white paper” Sandoz, Paul; Pericas-Geetsen, Santiago; Kawaguchi, Kahuske; Hadley, Marc; Pelegri-Llopart, Eduardo (2003). “Fast Web Services” URL: http://java.sun.com/developer/technicalArticles/WebServices/fas tWS ´ Performance em Web Services em Plataforma Java Perguntas ???