dicas para turbinar o servidor de aplicações jboss 7

Click here to load reader

Post on 21-Jun-2015

8.808 views

Category:

Technology

9 download

Embed Size (px)

DESCRIPTION

Palestra por Claudio Miranda (@claudio4j) e Bruno Rossetto (@brunorst) no evento JBoss in Bossa na data de 08/Out/2011 na cidade de Brasília.

TRANSCRIPT

  • 1. JBoss AS: Dicas para Turbinar oservidor de Aplicaes JBoss 7Claudio Miranda Arquiteto de SistemasRed Hat BrasilBruno Rossetto Machado Principal Support Engineer Red Hat Brasil

2. Agenda Tuning Threading Slimming MSC - Modular Service Container Logging Datasource Dicas 3. Tuning Nvel de personalizao extrema Maior performance, segurana, agilidade e beleza Tornando-se diferente e nico 4. Antes do tuning Precisa fazer tuning ? Verifique onde efetuar a melhoria Qual a parte que necessita melhoraro Aplicaoo Servidor Testes de Performance e Stress Documentao 5. Slimming: Retirando servios do JBoss ASTempo de inicializao 6. DEMO 7. MSC - Modular Service Container AS7 baseado no MSC Leve e eficiente Inicializao assncrona de servios Maquina de estados: UP, DOWN, REMOVED,STARTING, STOPPING,START_FAILED Gerenciamento de dependncias Maiores detalhes na palestra "JBoss AS 7" as 17:30 comFlavia Rainone, no auditrio. 8. MSC - Modular Service Container 9. Domains, Servers e Controllers* Modo domain ou domnio = Conjunto de servidores* Domain Controller o gerenciador* Server group = agregao de instncias* Foco: Gerenciamento deVrios servidores em umainterface 10. Versatilidade com os servios do JBoss ASo Executar o container Java EE em um teste unitrioo Utilizar uma VM com o App. Server por aplicaoo Executar em ambientes como cloud, celulares, etco Desenvolvimento extremamente rpidoo Rodar diversas instncias em seu laptop 11. AS7: socket-binding-group e port-offset Diferentes portas podem ser configuradas de formaautomatizada com o atributo port-offset standalone.xml domain.xml 12. AS7: socket-binding-group e port-offset Command-Line Interface (CLI)$ ./jboss-admin.sh --connectConnected to standalone controller at localhost:9999[standalone@localhost:9999 /] /socket-binding-group=standard-sockets:read-resource-description[standalone@localhost:9999 /] /socket-binding-group=standard-sockets:write-attribute(name=port-offset,value=200) 13. DEMO 14. AS7: subsystem=web /subsystem=web/connector=http Atributo max-connections 15. AS7: subsystem=web Caso seja necessrio, adicione o connector AJP o utilizado quando as requisies passam pelo mod_cluster, mod_jk ou mod_proxy_ajp para balancemanto de carga[standalone@localhost:9999 /] /socket-binding-group=standard-sockets/socket-binding=ajp:add(port=8009){"outcome" => "success"}[standalone@localhost:9999 /] /subsystem=web/connector=ajp:add(socket-binding=ajp,protocol="AJP/1.3", enabled=true){"outcome" => "success"} 16. DEMO 17. Tuning de JVMHeap e Perm -Xms -Xmx -XX:MaxPermSizeAlgoritmos de GC Throughput Collectorso -XX:+UseParallelGCo -XX:+UseParallelOldGC Concurrent Mark-Sweep (CMS) Collectoro -XX:+UseConcMarkSweepGCo -XX:+UseConcMarkSweepGC - XX:+UseParNewGC G1 - JDK 1.6u14 ou JDK 7o -XX:+UseG1GCo Combina caractersticas do CMS e Paraleloo Suporte parcial a JVMTI 18. Tuning de JVM Recomendaes-XX:+UseCompressedOops (quando 64 bits)-XX:+CMSClassUnloadingEnabled-XX:+DisableExplicitGC-Xss256kbin/domain.confbin/standalone.conf- OU 19. Logging As configuraes de fbrica so muito boas paradesenv, mas no so apropriadas para produoo Nvel de log muito detalhado Sempre que possvel diminua para WARN ou ERROR O maior responsvel pelo atraso o I/O. Quanto menos I/O, melhor performanceo Log duplicado em server.log e CONSOLE Desabilite o output CONSOLE 20. Logging Diretrios de log default: o standalone: {jboss.home}/standalone/log ou o domain: {jboss.home}/domain/log/host-controller {jboss.home}/domain/log/process-controller {jboss.home}/domain/servers/server-one/log Separe o diretrio gravao de log o Pode-se criar partio dedicada a log o No ir impactar o App Server caso ocorra um DiskFull -Djboss.server.log.dir=/var/log/jboss Limite o log em suas classes o if (logger.debugEnabled()) { logger.debug(bla); } Caso contrrio, sua aplicao ir criar instncias de String paracada declarao e o Log4j ir criar LoggingEvent 21. Datasource um dos pontos mais importantes do Tuningo Necessrio entender quanto sua aplicao precisa para atender demanda atual de requisies Utilize ferramentas de monitorao Deve-se pensar em um valor que no prejudique a performance do Banco de Dados e limite seu acesso. Melhor estourar o limite do pool do App. Server que o nmero de sesses do BD Em contra-partida, um pool muito pequeno far com que requisies esperem que uma conexo esteja disponvel para continuar o acesso, prejudicando a performance da aplicao 22. Datasource Principais atributos a serem configuradoso min-pool-size e max-pool-size Para maior Throughput: se voc j sabe que sua aplicao ir utilizar na maior parte do tempo 75 conexes, atribua 75 para o valor de min-pool-size e defina somente uma folga para max-pool- sizeo prefill (true ou false) Abre de cara conexes com o BD at preencher min-pool-sizeo blocking-timeout-millis Bloqueia a obteno de novas conexes pelo tempo definido nesta propriedade. Quando o tempo expira, lana uma Exception e a tentativa de conexo descartada 23. Datasource Principais atributos a serem configuradoso idle-timeout-minutes Tempo para uma conexo idle ser fechada. Default: 15 min.o valid-connection-checker|check-valid-connection-sql Verifica integridade da conexoo transaction-isolation Valor default definido pelo banco de dadoso prepared-statement-cache-size Nmero de pstmt em cache por conexes. Default: 0-sem cacheo share-prepared-statements (true ou false) Ao utilizar o mesmo statement duas vezes sem fecha-lo,utiliza-o mesmo 24. AS7: Datasource jdbc:mysql://localhost:3306/EJB3com.mysqlTRANSACTION_READ_COMMITTED75100truetesttest3250005 25. Dicas Timeout comum Connector HTTP Apache Web Server (front end) Datasources Read timeout Connection timeout20s10sUSER WEBASDB 26. Dicas Balanceador de carga (apache ou hardware) HTTP Cache Content Delivery Network Assista a palestra de modcluster, 14h Escalabilidade vertical x horizontal 27. PerguntasBruno Rossetto MachadoClaudio MirandaPrincipal Support Engineer Arquiteto de SistemasRed Hat BrasilRed Hat Brasilbmachado@redhat.com http://twitter.com/brunorsthttp://brmachado.blogspot.com