SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
JBoss AS: Dicas para Turbinar o
servidor de Aplicações JBoss 7
            Claudio Miranda
           Arquiteto de Sistemas
              Red Hat Brasil

        Bruno Rossetto Machado
         Principal Support Engineer
               Red Hat Brasil
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ção
  o Servidor
• Testes de Performance e Stress
• Documentação
Slimming: Retirando serviços do
               JBoss AS
Tempo de inicialização
DEMO
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.
MSC - Modular Service Container
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
Versatilidade com os serviços do
                 JBoss AS
o   Executar o container Java EE em um teste unitário
o   Utilizar uma VM com o App. Server por aplicação
o   Executar em ambientes como cloud, celulares, etc
o   Desenvolvimento extremamente rápido
o   Rodar diversas instâncias em seu laptop
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>
AS7: socket-binding-group e port-offset
 • Command-Line Interface (CLI)
$ ./jboss-admin.sh --connect
Connected 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)
DEMO
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
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"}
DEMO
Tuning de JVM
Heap e Perm
 • -Xms -Xmx -XX:MaxPermSize
Algoritmos 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
Tuning de JVM
 • Recomendações
-XX:+UseCompressedOops (quando 64 bits)
-XX:+CMSClassUnloadingEnabled
-XX:+DisableExplicitGC
-Xss256k

bin/domain.conf
bin/standalone.conf
- OU
<server-groups>
 <server-group name="group1" profile="default">
  <jvm name="default">
    <heap size="64m" max-size="512m"/>
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
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
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
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
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
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>
Dicas
 • Timeout comum
     •Connector HTTP
     •Apache Web Server (front end)
     •Datasources
       –Read timeout
       –Connection timeout


                20s        10s
USER     WEB          AS              DB
Dicas
•   Balanceador de carga (apache ou hardware)
•   HTTP Cache
•   Content Delivery Network
•   Assista a palestra de modcluster, 14h
•   Escalabilidade vertical x horizontal
Perguntas
Bruno Rossetto Machado            Claudio Miranda
  Principal Support Engineer     Arquiteto de Sistemas
          Red Hat Brasil            Red Hat Brasil
    bmachado@redhat.com
   http://twitter.com/brunorst
http://brmachado.blogspot.com

Mais conteúdo relacionado

Mais procurados

Microservices architecture overview v3
Microservices architecture overview v3Microservices architecture overview v3
Microservices architecture overview v3Dmitry Skaredov
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
Kafka Connect - debezium
Kafka Connect - debeziumKafka Connect - debezium
Kafka Connect - debeziumKasun Don
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례Taehyun Kim
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message BrokerMartin Toshev
 
Technical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration BusTechnical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration BusGeza Geleji
 
Oracle Service Bus 12c (12.2.1) What You Always Wanted to Know
Oracle Service Bus 12c (12.2.1) What You Always Wanted to KnowOracle Service Bus 12c (12.2.1) What You Always Wanted to Know
Oracle Service Bus 12c (12.2.1) What You Always Wanted to KnowFrank Munz
 
Easy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPEasy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPRabbit MQ
 
[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)Open Source Consulting
 
Enterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOEnterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOOliver Mueller
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic AppsBizTalk360
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 
OIM Sizing Guide 11gR2PS1
OIM Sizing Guide 11gR2PS1OIM Sizing Guide 11gR2PS1
OIM Sizing Guide 11gR2PS1Atul Goyal
 
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020 자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 

Mais procurados (20)

Microservices architecture overview v3
Microservices architecture overview v3Microservices architecture overview v3
Microservices architecture overview v3
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
Kafka Connect - debezium
Kafka Connect - debeziumKafka Connect - debezium
Kafka Connect - debezium
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례
 
RabbitMQ y Symfony
RabbitMQ y SymfonyRabbitMQ y Symfony
RabbitMQ y Symfony
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 
Technical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration BusTechnical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration Bus
 
Oracle Service Bus 12c (12.2.1) What You Always Wanted to Know
Oracle Service Bus 12c (12.2.1) What You Always Wanted to KnowOracle Service Bus 12c (12.2.1) What You Always Wanted to Know
Oracle Service Bus 12c (12.2.1) What You Always Wanted to Know
 
Easy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPEasy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQP
 
[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
 
Enterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOEnterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSO
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic Apps
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
OIM Sizing Guide 11gR2PS1
OIM Sizing Guide 11gR2PS1OIM Sizing Guide 11gR2PS1
OIM Sizing Guide 11gR2PS1
 
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020 자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 

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

Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQLMySQL Brasil
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...iMasters
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6MySQL Brasil
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteUilson Souza
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpCampus Party Brasil
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPIssac Nolis Ohasi
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Wagner Bianchi
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsJorge Walendowsky
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceSaveincloud
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancadoAmazon Web Services LATAM
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureGiovanni Bassi
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 

Semelhante a Dicas para Turbinar o servidor de Aplicações JBoss 7 (20)

Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQL
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamente
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs Php
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAP
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.js
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performance
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows Azure
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 

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

  • 1. JBoss AS: Dicas para Turbinar o servidor de Aplicações JBoss 7 Claudio Miranda Arquiteto de Sistemas Red Hat Brasil Bruno Rossetto Machado Principal Support Engineer Red Hat Brasil
  • 2. Agenda • Tuning • Threading • Slimming • MSC - Modular Service Container • Logging • Datasource • Dicas
  • 3. Tuning • Nível de personalização extrema • Maior performance, segurança, 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 melhorar o Aplicação o Servidor • Testes de Performance e Stress • Documentação
  • 5. Slimming: Retirando serviços do JBoss AS Tempo de inicialização
  • 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. MSC - Modular Service Container
  • 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. Versatilidade com os serviços do JBoss AS o Executar o container Java EE em um teste unitário o Utilizar uma VM com o App. Server por aplicação o Executar em ambientes como cloud, celulares, etc o Desenvolvimento extremamente rápido o Rodar diversas instâncias em seu laptop
  • 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. AS7: socket-binding-group e port-offset • Command-Line Interface (CLI) $ ./jboss-admin.sh --connect Connected 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 <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. 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. DEMO
  • 17. Tuning de JVM Heap e Perm • -Xms -Xmx -XX:MaxPermSize Algoritmos 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. Tuning de JVM • Recomendações -XX:+UseCompressedOops (quando 64 bits) -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -Xss256k bin/domain.conf bin/standalone.conf - OU <server-groups> <server-group name="group1" profile="default"> <jvm name="default"> <heap size="64m" max-size="512m"/>
  • 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. 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. 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. 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. 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. 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. Dicas • Timeout comum •Connector HTTP •Apache Web Server (front end) •Datasources –Read timeout –Connection timeout 20s 10s USER WEB AS DB
  • 26. Dicas • Balanceador de carga (apache ou hardware) • HTTP Cache • Content Delivery Network • Assista a palestra de modcluster, 14h • Escalabilidade vertical x horizontal
  • 27. Perguntas Bruno Rossetto Machado Claudio Miranda Principal Support Engineer Arquiteto de Sistemas Red Hat Brasil Red Hat Brasil bmachado@redhat.com http://twitter.com/brunorst http://brmachado.blogspot.com