JBoss AS: Dicas para Turbinar oservidor de Aplicações JBoss 7            Claudio Miranda           Arquiteto de Sistemas  ...
Agenda•   Tuning•   Threading•   Slimming•   MSC - Modular Service Container•   Logging•   Datasource•   Dicas
Tuning• Nível de personalização extrema• Maior performance, segurança, agilidade e beleza• Tornando-se diferente e único
Antes do tuning• Precisa fazer tuning ?• Verifique onde efetuar a melhoria• Qual a parte que necessita melhorar  o Aplicaç...
Slimming: Retirando serviços do               JBoss ASTempo de inicialização
DEMO
MSC - Modular Service Container• AS7 baseado no MSC• Leve e eficiente• Inicialização assíncrona de serviços• Maquina de es...
MSC - Modular Service Container
Domains, Servers e Controllers* Modo “domain” ou “domínio” = Conjunto de servidores* Domain Controller é o gerenciador* Se...
Versatilidade com os serviços do                 JBoss ASo   Executar o container Java EE em um teste unitárioo   Utilizar...
AS7: socket-binding-group e port-offset• Diferentes portas podem ser configuradas de forma  automatizada com o atributo po...
AS7: socket-binding-group e port-offset • Command-Line Interface (CLI)$ ./jboss-admin.sh --connectConnected to standalone ...
DEMO
AS7: subsystem=web • /subsystem=web/connector=http<subsystem xmlns="urn:jboss:domain:web:1.0" default-virtual-server="defa...
AS7: subsystem=web • Caso seja necessário, adicione o connector AJP     o   É utilizado quando as requisições passam pelo ...
DEMO
Tuning de JVMHeap e Perm • -Xms -Xmx -XX:MaxPermSizeAlgoritmos de GC • Throughput Collectors    o -XX:+UseParallelGC    o ...
Tuning de JVM • Recomendações-XX:+UseCompressedOops (quando 64 bits)-XX:+CMSClassUnloadingEnabled-XX:+DisableExplicitGC-Xs...
Logging• As configurações de fábrica são muito boas para  desenv, mas não são apropriadas para produção  o   Nível de log ...
Logging• Diretórios de log default:   o standalone: {jboss.home}/standalone/log ou   o domain: {jboss.home}/domain/log/hos...
Datasource• É um dos pontos mais importantes do Tuning  o   Necessário entender quanto sua aplicação precisa para atender ...
Datasource• Principais atributos a serem configurados  o   min-pool-size e max-pool-size        Para maior Throughput: se...
Datasource• Principais atributos a serem configurados  o   idle-timeout-minutes         Tempo para uma conexão idle ser f...
AS7: Datasource <datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS">   <connection-url>jdbc:mysql:/...
Dicas • Timeout comum     •Connector HTTP     •Apache Web Server (front end)     •Datasources       –Read timeout       –C...
Dicas•   Balanceador de carga (apache ou hardware)•   HTTP Cache•   Content Delivery Network•   Assista a palestra de modc...
PerguntasBruno Rossetto Machado            Claudio Miranda  Principal Support Engineer     Arquiteto de Sistemas          ...
Próximos SlideShares
Carregando em…5
×

Dicas para Turbinar o servidor de Aplicações JBoss 7

11.946 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
10 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
11.946
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
185
Comentários
0
Gostaram
10
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Dicas para Turbinar o servidor de Aplicações JBoss 7

  1. 1. JBoss AS: Dicas para Turbinar oservidor de Aplicações JBoss 7 Claudio Miranda Arquiteto de Sistemas Red Hat Brasil Bruno Rossetto Machado Principal Support Engineer Red Hat Brasil
  2. 2. Agenda• Tuning• Threading• Slimming• MSC - Modular Service Container• Logging• Datasource• Dicas
  3. 3. Tuning• Nível de personalização extrema• Maior performance, segurança, agilidade e beleza• Tornando-se diferente e único
  4. 4. Antes do tuning• Precisa fazer tuning ?• Verifique onde efetuar a melhoria• Qual a parte que necessita melhorar o Aplicação o Servidor• Testes de Performance e Stress• Documentação
  5. 5. Slimming: Retirando serviços do JBoss ASTempo de inicialização
  6. 6. DEMO
  7. 7. MSC - Modular Service Container• AS7 baseado no MSC• Leve e eficiente• Inicialização assíncrona de serviços• Maquina de estados: UP, DOWN, REMOVED, STARTING, STOPPING,START_FAILED• Gerenciamento de dependências• Maiores detalhes na palestra "JBoss AS 7" as 17:30 com Flavia Rainone, no auditório.
  8. 8. MSC - Modular Service Container
  9. 9. Domains, Servers e Controllers* Modo “domain” ou “domínio” = Conjunto de servidores* Domain Controller é o gerenciador* Server group = agregação de instâncias* Foco: Gerenciamento de Vários servidores em uma interface
  10. 10. Versatilidade com os serviços do JBoss ASo Executar o container Java EE em um teste unitárioo Utilizar uma VM com o App. Server por aplicaçãoo Executar em ambientes como cloud, celulares, etco Desenvolvimento extremamente rápidoo Rodar diversas instâncias em seu laptop
  11. 11. AS7: socket-binding-group e port-offset• Diferentes portas podem ser configuradas de forma automatizada com o atributo port-offset• standalone.xml<socket-binding-group name="standard-sockets" default-interface="public" port-offset="100">• domain.xml<server ...><socket-binding-group ref="standard-sockets" port-offset="150"/></server><server ...><socket-binding-group ref="ha-sockets" port-offset="250"/></server>
  12. 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. 13. DEMO
  14. 14. AS7: subsystem=web • /subsystem=web/connector=http<subsystem xmlns="urn:jboss:domain:web:1.0" default-virtual-server="default-host"><connector name="http" protocol="HTTP/1.1" socket-binding="http"scheme="http" max-connections="200"/><virtual-server name="default-host" enable-welcome-root="true"><alias name="localhost"/><alias name="example.com"/></virtual-server></subsystem> • Atributo max-connections
  15. 15. AS7: subsystem=web • Caso seja necessário, adicione o connector AJP o É utilizado quando as requisições 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. 16. DEMO
  17. 17. Tuning de JVMHeap e Perm • -Xms -Xmx -XX:MaxPermSizeAlgoritmos de GC • Throughput Collectors o -XX:+UseParallelGC o -XX:+UseParallelOldGC • Concurrent Mark-Sweep (CMS) Collector o -XX:+UseConcMarkSweepGC o -XX:+UseConcMarkSweepGC - XX:+UseParNewGC • G1 - JDK 1.6u14 ou JDK 7 o -XX:+UseG1GC o Combina características do CMS e Paralelo o Suporte parcial a JVMTI
  18. 18. Tuning de JVM • Recomendações-XX:+UseCompressedOops (quando 64 bits)-XX:+CMSClassUnloadingEnabled-XX:+DisableExplicitGC-Xss256kbin/domain.confbin/standalone.conf- OU<server-groups> <server-group name="group1" profile="default"> <jvm name="default"> <heap size="64m" max-size="512m"/>
  19. 19. Logging• As configurações de fábrica são muito boas para desenv, mas não são apropriadas para produção o Nível de log é muito detalhado  Sempre que possível diminua para WARN ou ERROR  O maior responsável pelo atraso é o I/O. Quanto menos I/O, melhor performance o Log duplicado em server.log e CONSOLE  Desabilite o output CONSOLE
  20. 20. Logging• Diretórios 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 diretório gravação de log o Pode-se criar partição dedicada a log o Não 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 contrário, sua aplicação irá criar instâncias de String para cada declaração e o Log4j irá criar LoggingEvent
  21. 21. Datasource• É um dos pontos mais importantes do Tuning o Necessário entender quanto sua aplicação precisa para atender à demanda atual de requisições  Utilize ferramentas de monitoração  Deve-se pensar em um valor que não prejudique a performance do Banco de Dados e limite seu acesso. Melhor estourar o limite do pool do App. Server que o número de sessões do BD  Em contra-partida, um pool muito pequeno fará com que requisições esperem que uma conexão esteja disponível para continuar o acesso, prejudicando a performance da aplicação
  22. 22. Datasource• Principais atributos a serem configurados o min-pool-size e max-pool-size  Para maior Throughput: se você já sabe que sua aplicação irá utilizar na maior parte do tempo 75 conexões, atribua 75 para o valor de min-pool-size e defina somente uma folga para max-pool- size o prefill (true ou false)  Abre de cara conexões com o BD até preencher min-pool-size o blocking-timeout-millis  Bloqueia a obtenção de novas conexões pelo tempo definido nesta propriedade. Quando o tempo expira, lança uma Exception e a tentativa de conexão é descartada
  23. 23. Datasource• Principais atributos a serem configurados o idle-timeout-minutes  Tempo para uma conexão idle ser fechada. Default: 15 min. o valid-connection-checker|check-valid-connection-sql  Verifica integridade da conexão o transaction-isolation  Valor default é definido pelo banco de dados o prepared-statement-cache-size  Número de pstmt em cache por conexões. Default: 0-sem cache o share-prepared-statements (true ou false)  Ao utilizar o mesmo statement duas vezes sem fecha-lo, utiliza-o mesmo
  24. 24. AS7: Datasource <datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS"> <connection-url>jdbc:mysql://localhost:3306/EJB3</connection-url> <driver>com.mysql</driver> <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> <pool> <min-pool-size>75</min-pool-size> <max-pool-size>100</max-pool-size> <prefill>true</prefill> </pool> <security><user-name>test</user-name><password>test</password></security> <statement> <prepared-statement-cache-size>32</prepared-statement-cache-size> <share-prepared-statements/> </statement> <timeout> <blocking-timeout-millis>5000</blocking-timeout-millis> <idle-timeout-minutes>5</idle-timeout-minutes> </timeout> <validation> <valid-connection-checker class-name="org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker"/> </validation> </datasource>
  25. 25. Dicas • Timeout comum •Connector HTTP •Apache Web Server (front end) •Datasources –Read timeout –Connection timeout 20s 10sUSER WEB AS DB
  26. 26. Dicas• Balanceador de carga (apache ou hardware)• HTTP Cache• Content Delivery Network• Assista a palestra de modcluster, 14h• Escalabilidade vertical x horizontal
  27. 27. PerguntasBruno Rossetto Machado Claudio Miranda Principal Support Engineer Arquiteto de Sistemas Red Hat Brasil Red Hat Brasil bmachado@redhat.com http://twitter.com/brunorsthttp://brmachado.blogspot.com

×