IBM WebSphere Application Server, Advanced Edition

Guia de Ajustes


Quais as novidades no ajuste de desempenho?

Assistente do ajustador de desempenho

Armazenamento em cache de fragmento dinâmico

Fundamentos do ajuste

   O que é ajuste de desempenho?

   Tabela de sintomas

   Tipos de ajustes

      Ajuste de parâmetros

           Ajustando parâmetros com um alto impacto
           Ajustando parâmetros para evitar falhas

    Ajustando as filas do sistema do WebSphere Application Server

       Rede de filas do WebSphere

             Filas fechadas versus filas abertas
             Definições de filas no WebSphere

       Determinando definições

             Enfileirando antes do WebSphere

             Traçando uma curva de rendimento

             Ajustes de filas
             Ajustes de filas para acessar padrões

       Enfileiramento e beans corporativos

      Enfileiramento e criação de cluster

   Ajustando o Secure Socket Layer

      Visão geral do protocolo de reconhecimento e criptografia/decriptografia em massa

      Como melhorar o desempenho do Secure Socket Layer

   Lista de verificação de desempenho de montagem do aplicativo

   Ajustando a memória Java

       O gargalo da coleta de lixo

       O calibre da coleta de lixo

       Detectando utilização em excesso de objetos

       Detectando fugas de memória

       Parâmetros de heap do Java

    Número de conexões para o DB2

    Parâmetros de TCP do Solaris

    Topologia de gerenciamento da carga de trabalho

Parâmetros de desempenho individual

    Capacidade e definições de hardware

       Velocidade do processador

       Memória

       Rede

    Definições do sistema operacional

       Parâmetros do TCP/IP do Windows NT/2000

             TcpTimedWaitDelay do Windows NT/2000
             MaxUserPort do Windows NT/2000

       AIX (4.3.3)

             Descritores de arquivos do AIX (ulimit)

       Solaris

             Descritores de arquivos do Solaris (ulimit)
             tcp_close_wait_interval/tcp_time_wait_interval do Solaris
             tcp_fin_wait_2_flush_interval do Solaris
             tcp_keepalive_interval do Solaris
             Outros parâmetros TCP do Solaris
             semsys:seminfo_semume de kernel do Solaris
             semsys:seminfo_semopm de kernel do Solaris

       HP-UX 11

             Definindo o Tamanho da Página Virtual para 64K para WebSphere Application Server JVM
             HP-UX 11 tcp_conn_request_max
             Recomendações de parâmetro do kernel do HP-UX 11

    O servidor Web

       Intervalo de recarregamento da configuração do servidor Web

       IBM HTTP Server - AIX e Solaris

             MaxClients
             MinSpareServers, MaxSpareServers e StartServers

       Netscape Enterprise server - AIX e Solaris

             Threads ativos

       Microsoft Internet Information Server - Windows NT/2000

             Propriedades de Permissão do IIS (Internet Information Server)
             Número de ocorrências esperadas por dia
             Parâmetro ListenBackLog

       IBM HTTP server - Linux

             MaxRequestsPerChild

       IBM HTTP server - Windows NT/2000

             ThreadsPerChild
             ListenBackLog

    O processo do servidor de aplicativos do WebSphere

       Ajuste da prioridade do processo do servidor de aplicativos

       Contêiners da Web

             Máximo de conexões ThreadsMax do contêiner da Web
             Máximo de Transportes Keep-Alive
             Máximo de Pedidos de Transporte por Keep-Alive
             Cache de invocação da URL
             Permitir alocação de thread além do máximo

       Contêiner EJB

             Definições de cache
             Interromper beans corporativos do CMP em vários módulos do bean corporativo

       Segurança

             Desligar segurança quando não precisar
             Melhorar o tempo limite da cache de segurança para o ambiente
             Tipos e tamanhos da cache de segurança (parâmetros do sistema)
             Configurar sessões do Secure Socket Layer apropriadamente

       ORB (Object Request Broker)

             Passar por valor versus passar por referência (NoLocalCopies)
             com.ibm.CORBA.ServerSocketQueueDepth
             com.ibm.CORBA.MaxOpenConnections e Máximo de Cache de Conexão ORB
             Tamanho do conjunto de threads do Object Request Broker
             Utilizando o JNI ReaderManager e o Reader Threads

    JVMs (Java Virtual Machines)

       Aquecimento do servidor Sun JDK 1.3 HotSpot

       Tamanho do conjunto da nova geração do Sun JDK 1.3 HotSpot

       Compilador JIT (Just In Time)

       Definições do tamanho da pilha

       Coleta de lixo da classe

    O banco de dados

       Localização do banco de dados

       Tamanho do conjunto da conexão de origem de dados do WebSphere

       Tamanho da cache de instrução preparada

       DB2

             Utilizar soquetes TCP para DB2 no Linux
             DB2 MaxAppls
             DB2 MaxAgents
             DB2 buffpage
             Nível de otimização de consulta do DB2
             DB2 reorgchk
             DB2 MinCommit

    Gerenciamento de sessão

    WebSphere Application Server Enterprise Extensions Message Listener

       Máximo de sessões

      Vários servidores de aplicativos sendo recebidos na mesma fila

Referência adicional

Procedimentos da ferramenta de desempenho

       Iniciando o Monitor de Desempenho do Windows NT/2000



Quais as novidades do ajuste de desempenho?

Assistente do ajustador de desempenho
Armazenamento em cache de fragmento dinâmico

Assistente do ajustador de desempenho

O Assistente do Ajustador de Desempenho é uma ferramenta incluída no WebSphere Application Server, Advanced Edition que inclui as definições relacionadas de desempenho mais comuns associadas ao servidor de aplicativos. Utilize esse assistente para otimizar as definições de seus aplicativos, servlets, beans corporativos, origens de dados e carga esperada. Os parâmetros que podem ser definidos são:

Para chamá-los a partir do console administrativo, selecione Console > Assistentes > Ajustador de Desempenho.

Consulte o artigo 6.6.21 do InfoCenter, para obter mais informações.

Armazenamento em cache de fragmento dinâmico

O armazenamento em cache de fragmento dinâmico é a capacidade de armazenar em cache a saída de servlets e arquivos JSP dinâmicos, uma tecnologia que melhora muito o desempenho do aplicativo. Essa cache, trabalhando na JVM de um servidor de aplicativos, intercepta chamadas para um método service() do servlet, verificando se ele pode atender essa chamada a partir da cache, em vez de executar o servlet novamente. Como os aplicativos J2EE possuem proporções altas de leitura-gravação e podem tolerar um grau pequeno de latência na atualização de seus dados, o armazenamento em cache do fragmento pode criar uma oportunidade para ganhos excelentes no tempo de resposta do servidor, rendimento e escalabilidade.

Depois que um servlet é executado (gerando a saída que será armazenada em cache), é gerada uma entrada de cache contendo essa saída. Também são gerados efeitos colaterais da execução (isto é, a chamada de outros servlets ou arquivos JSP), além de meta-dados sobre a entrada, incluindo informações de tempo limite e de prioridade de entrada. Entradas exclusivas são diferenciadas por uma cadeia de IDs gerados a partir do objeto HttpServletRequest para cada chamada do servlet. Isso resulta em um servlet sendo armazenado em cache dependendo dos parâmetros do pedido, da URI utilizada para chamar o servlet ou de informações da sessão. Como os arquivos JSP são compilados pelo WebSphere Application Server nos servlets, os JSPs e os servlets são utilizados de forma passível de alteração (exceto ao declarar elementos em um arquivo XML).

Para definir isso:

  1. Do console administrativo, selecione o servidor de aplicativos que deseja ajustar.
  2. Clique em Serviços > Serviço do Contêiner da Web > Editar Propriedades.
  3. Selecione a guia Armazenamento em Cache do Servlet e marque a caixa Ativar Armazenamento em Cache do Servlet.
  4. Clique em OK e salve as alterações.
  5. Reinicie o servidor do aplicativo.

Consulte o artigo 4.5: Armazenamento em cache de fragmento dinâmico do InfoCenter, para obter mais informações.

Tabela de sintomas

Crie um atalho no ajuste, reexibindo a tabela de sintomas. A tabela é designada para acesso fácil aos sintomas e para um link rápido para ajuste de informações relacionadas a esse sintoma. A tabela contém os seguintes tipos de informações:

Sintoma Informações adicionais
O rendimento e o tempo de resposta são indesejáveis. Velocidade do processador
AIX: Erro de alocação de memória
Solaris: Arquivos abertos em excesso
Descritores de arquivos do AIX (ulimit) ou Descritores de arquivos do Solaris (ulimit)
Solaris: O servidor é bloqueado durante os períodos de pico, as respostas levam minutos, a utilização do processador permanece alta em toda a atividade nos processos do sistema e netstat mostra que vários soquetes estão abertos para a porta 80 no estado CLOSE_WAIT ou FIN_WAIT_2. tcp_close_wait_interval/tcp_time_wait_interval do Solaris e tcp_fin_wait_2_flush_interval do Solaris
Windows NT/2000: O Netstat mostra que muitos soquetes estão em TIME_WAIT. TcpTimedWaitDelay do Windows NT/2000
HP-UX 11: O rendimento é indesejado e a prioridade do servidor de aplicativos não foi ajustada. Ajustando a prioridade do sistema operacional do processo do WebSphere Application Server
Na carga, os pedidos do cliente não chegam no servidor Web porque eles excedem o tempo limite ou são rejeitados. Para HP-UX 11, consulte HP-UX 11 tcp_conn_request_max
Para IIS Windows NT/2000, consulte o parâmetro ListenBackLog
Para IBM HTTP Server no NT, consulte ListenBackLog
Windows NT/2000: O desempenho do WebSphere Application Server diminuiu depois que um servidor de aplicativos de outro fornecedor foi instalado. Propriedades de Permissões do IIS
A métrica de porcentagem máxima do Analisador de Recursos indica que o conjunto de threads do contêiner da Web é muito pequeno. Máximo de conexões ThreadsMax do contêiner da Web
O Netstat mostra muitos soquetes de estado TIME_WAIT para a porta 9080. Máximo de transportes Keep-Alive do contêiner da Web
Muita entrada/saída de disco devido à paginação. Definições de tamanho da pilha
O métrico de porcentagem utilizada do Analisador de Recursos para um conjunto de conexões de origem de dados indica o tamanho do conjunto como muito grande. Tamanho do conjunto de conexões da origem de dados do WebSphere
A cache de instrução preparada do Analisador de Recursos descarta o métrico que indica que o tamanho da cache de instrução preparada da origem de dados é muito pequeno. Tamanho da cache de instrução preparada
Muita entrada/saída ocorre devido aos registros do log de gravação do DB2. DB2 MinCommit
A métrica de porcentagem máxima do Analisador de Recursos indica que o conjunto de threads do Object Request Broker é muito pequeno. Enfileiramento e beans corporativos
A JVMPI (Java Virtual Machine Profiler Interface) do Analisador de Recursos indica utilização excessiva de objetos quando muito tempo está sendo gasto na coleta de lixo. Detectando utilização excessiva de objetos
O métrico de memória utilizada do Analisador de Recursos mostra fugas de memória e o Java exibe uma exceção Sem Memória. Detectando fugas de memória
O rendimento, o tempo de resposta e a escalabilidade são indesejáveis. Se o aplicativo permitir, utilize o armazenamento em cache de fragmento dinâmico

Fundamentos do ajuste

Uma ampla variedade de aperfeiçoamentos de desempenho pode ser feita no WebSphere Application Server ao utilizar procedimentos disponíveis para ajuste. Esse guia de ajuste ensina como o ajuste funciona, fornecendo recomendações gerais e uma descrição de metodologias específicas de ajuste. Encontram-se também disponíveis dicas e sugestões sobre os vários fatores e variáveis que podem melhorar o ajuste de desempenho.

Utilize o guia de ajustes junto com seus exemplos e recursos para expandir sua experiência com o ajuste. O ajuste é um processo de aprendizado contínuo. Os resultados podem variar daqueles apresentados neste guia.

O que influencia o ajuste?

A seguir, encontram-se todos os componentes que podem afetar o desempenho do WebSphere Application Server: Cada um deles possui suas próprias opções de ajuste, variando em importância e impacto. Cada um dos acima são explicados em detalhes na seção Parâmetros Individuais de Desempenho desse documento.

Para sua comodidade, são descritos alguns procedimentos para a definição de parâmetros em outros produtos. Como esses produtos podem ser alterados, pense nesses procedimentos como sugestões.

Tipos de ajuste

Há dois tipos de ajuste: ajuste do aplicativo e ajuste do parâmetro.

Embora o ajuste do aplicativo ofereça, às vezes, os melhores aperfeiçoamentos de ajuste, este documento focaliza os parâmetros individuais de desempenho e a sinergia entre eles.

O documento técnico, WebSphere Application Server Development Best Practices for Performance and Scalability, trata do ajuste de aplicativo descrevendo as melhores práticas de desenvolvimento para os servlets de conteúdo de aplicativos da Web, arquivos JSP (Java Server Pages), JDBC (Java Database Connectivity) e aplicativos corporativos que contêm componentes de bean corporativo.

Ajuste do parâmetro

O ajuste do parâmetro é a arte de alterar definições do WebSphere Application Server com o objetivo de melhorar o desempenho. Os valores sugeridos nesse documento são instruções gerais. As definições mais favoráveis para seu ambiente podem variar significantemente. Além disso, lembre-se de que após ajustar um gargalo, é possível encontrar outro, gargalo não relacionado. Se encontrar, não será possível experienciar a melhora de desempenho até que ambos os gargalos tenham sido removidos.

Essa seção discute dois tipos de parâmetros de ajuste:
Parâmetros de ajuste com um alto impacto
Esses parâmetros podem ter resultados de alto desempenho. Eles são um sub-conjunto de todos os outros parâmetros e possuem um impacto importante no desempenho. Como dependem do aplicativo, as definições apropriadas de parâmetros para o aplicativo e o ambiente podem ser diferentes.

A tabela a seguir lista vários parâmetros de ajuste de melhora de alto desempenho:

Lista de verificação do desempenho da montagem do aplicativo
Ajustando as filas do sistema WebSphere Application Server
Utilizando passar por valor versus passar por referência (NoLocalCopies)
Ajustando parâmetros TCP do Solaris
Ajustando a memória do Java
Ajustando MaxRequestsPerChild: no Linux com IBM HTTP Server
Ajustando o tamanho do conjunto de conexões da origem de dados do WebSphere
Ajustando o tamanho da cache de instrução preparada
Intervalo de recarregamento de configuração do servidor Web
Ajustando o tamanho da cache de instrução preparada
Utilizando a cache com sessão persistente
Parâmetros de ajuste para evitar falhas

Os parâmetros a seguir ajudam a prevenir problemas funcionais:

Parâmetro ListenBackLog: Aplica-se se o Windows NT/2000 for executado com o IIS sob uma carga pesada do cliente
Tipo de transporte: Utilize Soquetes INET no Solaris (o padrão para o WebSphere Application Server)
Número de conexões ao DB2: Se você estabelecer mais conexões do que o DB2 configura por padrão
Permitir alocação de thread além do máximo foi selecionado e o sistema está sobrecarregado porque muitos threads estão alocados.
Utilizando os Soquetes TCP para DB2 no Linux: Para bancos de dados locais
Tamanho do conjunto de conexões da origem de dados do WebSphere: Certifique-se de ter conexões suficientes para tratar de conexões extras requeridas para o processamento de transação com Entity EJBs e para evitar bloqueios.

Ajustando as filas no WebSphere Application Server

O WebSphere Application Server possui uma série de componentes inter-relacionados que devem estar bem ajustados entre si para suportar as necessidades habituais de seu aplicativo de e-business de ponta a ponta. Esses ajustes ajudam o sistema a atingir um rendimento máximo, enquanto mantém a estabilidade geral do sistema.

Rede de enfileiramento

O WebSphere Application Server estabelece uma rede de enfileiramento, que é uma rede de filas interconectadas que representam os vários componentes do aplicativo que atende a plataforma. Essas filas incluem a rede, o servidor Web, o contêiner da Web, o contêiner de EJB, a origem de dados e, possivelmente, um gerenciador de conexões para um sistema backend personalizado. Cada um desses recursos representa uma fila de pedidos que aguardam para utilizar esse recurso.

As filas do WebSphere são recursos dependentes de carga. O tempo médio de atendimento de um pedido depende do número de clientes simultâneos.

Filas fechadas versus filas abertas

A maioria das filas que constituem a rede de enfileiramento são filas fechadas. Em comparação com uma fila aberta, uma fila fechada coloca um limite no número máximo de pedidos presentes na fila.

Uma fila fechada permite que os recursos do sistema sejam rigorosamente gerenciados. Por exemplo, a definição Número Máximo de Conexões do contêiner da Web controla o tamanho da fila do contêiner da Web. Se a média de execução do servlet em um contêiner da Web criar 10 MB de objetos durante cada pedido, definir o número máximo de conexões com um valor de 100 limitaria a memória consumida pelo contêiner da Web para 1 GB.

Em uma fila fechada, um pedido pode ter um de dois estados: ativo ou aguardando. Um pedido ativo está em execução ou aguardando uma resposta de uma fila downstream. Por exemplo, um pedido ativo no servidor Web está executando trabalho (como por exemplo, recuperando HTML estático) ou aguardando a conclusão de um pedido no contêiner da Web. No estado aguardando, o pedido está aguardando para se tornar ativo. O pedido permanecerá no estado aguardando até que um dos pedidos ativos saia da fila.

Todos os servidores Web suportados pelo WebSphere Application Server são filas fechadas, assim como as origens de dados do WebSphere Application Server. Os contêineres da Web podem ser configurados como filas abertas ou fechadas. Em geral, é melhor que sejam filas fechadas. Os contêiners de EJB são filas abertas; se não houver threads disponíveis no conjunto, um novo será criado para a duração do pedido.

Se os beans corporativos estiverem sendo chamados por servlets, o contêiner da Web limitará o número total de pedidos simultâneos em um contêiner de EJB porque o contêiner da Web também possui um limite. Isto só se aplicará se beans corporativos forem chamados a partir do thread de execução do servlet. Não há impedimentos para que você crie threads e encha o contêiner de EJB com pedidos. Esta é uma das razões pelas quais não é recomendável que um servlet crie seus próprios threads de trabalho.

Definições de filas no WebSphere Application Server

Os itens a seguir destacam as várias definições de fila:

Determinando as definições

A seção a seguir descreve a metodologia para a configuração de filas do WebSphere Application Server. A dinâmica do sistema pode ser alterada e, portanto, seus parâmetros de ajuste, movendo recursos (por exemplo, mover seu servidor de banco de dados para outra máquina) ou fornecendo recursos mais potentes, como um conjunto de CPUs mais rápidas com mais memória. Assim, ajuste os parâmetros de ajuste para uma configuração específica do ambiente de produção.

Enfileiramento no WebSphere

A primeira regra de ajuste é reduzir o número de pedidos nas filas do WebSphere Application Server. Em geral, é melhor que os pedidos aguardem na rede (na frente do servidor Web) do que no WebSphere Application Server. Essa configuração permitirá que fiquem na rede de enfileiramento somente os pedidos que estiverem prontos para serem processados. Para realizar essa configuração, especifique as filas mais upstream (mais próximas do cliente) para que fiquem um pouco maiores e especifique as filas mais downstream (mais além do cliente) para que fiquem progressivamente menores.

As filas nesta rede de enfileiramento são progressivamente menores, conforme o trabalho flui no sentido downstream. Quando 200 clientes chegarem no servidor Web, 125 pedidos permanecerão em fila na rede porque o servidor Web foi definido para tratar de 75 clientes simultâneos. À medida que os 75 pedidos passarem do servidor Web para o contêiner da Web, 25 permanecerão enfileirados no servidor Web e os 50 restantes serão tratados pelo contêiner da Web. Esse processo avançará pela origem de dados até que os 25 usuários cheguem ao destino final, o servidor do banco de dados. Porque, em cada ponto upstream, há trabalho aguardando para colocar um componente; neste sistema, nenhum componente terá que aguardar a chegada de trabalho. A quantidade em massa de pedidos aguarda na rede, fora do WebSphere Application Server. Isso dá estabilidade porque nenhum componente é sobrecarregado. Software de roteamento como o Network Dispatcher da IBM pode ser utilizado para direcionar usuários que estão aguardando para outros servidores em um cluster do WebSphere Application Server.

Desenhando uma curva de rendimento

Utilizando uma etapa de teste que represente todo o sentido do aplicativo de produção (por exemplo, ele utiliza todos os caminhos de códigos significativos) ou utilizando o próprio aplicativo de produção, execute um conjunto de experiências para determinar quando os recursos do sistema serão maximizados (o ponto de saturação). Conduza esses testes depois que a maioria dos gargalos tiver sido removida do aplicativo. O objetivo comum desses testes é levar as CPUs a uma utilização de quase 100%.

Inicie sua primeira experiência de linha de base com filas grandes. Isso permitirá o máximo de simultaneidade no sistema. Por exemplo, inicie a primeira experiência com um tamanho de fila de 100 em cada um dos servidores na rede de enfileiramento: servidor Web, contêiner da Web e origem de dados.

A seguir, comece uma série de experiências para marcar uma curva de rendimento, aumentando o carregamento de usuários simultâneos depois de cada experiência. Por exemplo, faça experiências com 1 usuário, 2 usuários, 5, 10, 25, 50, 100, 150 e 200 usuários. Depois de cada execução, registre o rendimento (pedidos po segundo) e os tempos de resposta (segundos por pedido).

A curva resultante de suas experiências de linha de base devem ser semelhantes à curva de rendimento comum conforme mostrada:

O rendimentos do WebSphere Application Server é uma função do número de pedidos simultâneos presentes no sistema total. A seção A, a área de carregamento leve mostra que, conforme o número de pedidos de usuários simultâneos aumenta, o rendimento aumenta quase de forma linear ao número de pedidos. Isso prova que, em carregamentos leves, os pedidos simultâneos encontram muito pouco congestionamento nas filas do sistema do WebSphere Application Server. Em algum ponto, o congestionamento começa a aumentar e o rendimento aumenta em uma taxa muito mais baixa, até atingir um ponto de saturação que represente o valor de rendimento máximo, conforme determinado por algum gargalo no sistema WebSphere Application Server. O melhor tipo de gargalo gerenciável ocorre quando as CPUs das máquinas do WebSphere Application Server ficam saturadas. Isso é desejável porque é possível resolver um gargalo na CPU incluindo CPUs adicionais ou mais potentes.

Na área de carregamento pesado ou na Seção B, conforme a carga do cliente simultâneo aumenta, o rendimento permanece relativamente constante. Porém, o tempo de resposta aumentará proporcionalmente ao carregamento de usuários. Isso significa que, se você dobrar o carregamento de usuários na área de carregamento pesado, o tempo de resposta dobrará. Em algum ponto, representado pela Seção C, a área de redução, um dos componentes do sistema se esgota. Nesse ponto, o rendimento começa a diminuir. Por exemplo, o sistema pode entrar na área de redução quando as conexões da rede no servidor Web esgotarem os limites da placa de rede ou se você exceder os limites do sistema operacional para identificadores de arquivos.

Se o ponto de saturação for atingido ao levar as CPUs do sistema a uma utilização de quase 100%, passe para a próxima etapa. Se a CPU não for conduzida a 100%, provavelmente existe um gargalo que está sendo agravado pelo aplicativo. Por exemplo, o aplicativo pode estar criando objetos Java em excesso, causando gargalos na coleta de lixo no Java.

Existem duas maneiras de gerenciar gargalos do aplicativo: remover o gargalo ou clonar o gargalo. A melhor maneira de gerenciar um gargalo é removê-lo. Utilize um criador de perfil do aplicativo baseado em Java para examinar a utilização de todos os objetos. Os criadores de perfis como PTDV (Performance Trace Data Visualizer), JProbe e Jinsight podem ser utilizados.

Ajustes de filas

O número de usuários simultâneos no ponto de saturação representa a simultaneidade máxima do aplicativo. Por exemplo, se o aplicativo saturou o WebSphere Application Server com 50 usuários, você perceberá que 48 usuários deram a melhor combinação de rendimento e tempo de resposta. Esse valor é chamado Simultaneidade Máxima de Aplicativos. A Simultaneidade Máxima de Aplicativos se torna o valor a ser utilizado como a base para o ajuste das filas do sistema do WebSphere Application Server. Lembre-se que é desejável que a maioria dos usuários aguarde na rede, diminuindo os tamanhos de filas, à medida que se move do cliente no sentido downstream. Por exemplo, dado um valor de Simultaneidade Máxima de Aplicativos de 48, inicie com filas do sistema nos seguintes valores: servidor Web 75, contêiner da Web 50, origem de dados 45. Faça uma série de experiências adicionais, ajustando esses valores como ligeiramente superior e inferior para encontrar as melhores definições.

O Analisador de Recursos pode ser utilizado para determinar o número usuários simultâneos através da métrica threads simultaneamente ativos do conjunto de threads do mecanismo de servlet.

Em experiências de desempenho, o rendimento aumentou de 10 a 15% quando o máximo de transporte Keep-Alive do contêiner da Web é ajustado para corresponder ao número máximo de threads do contêiner da Web.

Ajustando as definições de filas para padrões de acesso

Em muitos casos, somente uma parte dos pedidos que passam por uma fila entrará na próxima fila downstream. Em um site com várias páginas estáticas, muitos pedidos serão preenchidos no servidor Web e não passarão para o contêiner da Web. Nessas circunstâncias, a fila do servidor Web pode ser muito maior que a fila do contêiner da Web. Na seção anterior, a fila do servidor Web foi definida como 75 em vez de mais próxima ao valor de Simultaneidade Máxima de Aplicativos. É necessário fazer ajustes semelhantes quando componentes diferentes possuem tempos de execução diferentes.

Por exemplo, em um aplicativo que gaste 90% de seu tempo em um servlet complexo e somente 10% fazendo uma breve consulta de JDBC, em média, somente 10% dos servlets estarão utilizando as conexões do banco de dados a qualquer momento, portanto, a fila de conexões do banco de dados poderá ser significantemente menor que a fila do contêiner da Web. De modo contrário, se grande parte do tempo de execução de um servlet for gasta fazendo uma consulta complexa em um banco de dados, pense em aumentar os valores da fila no contêiner da Web e na origem de dados. Sempre monitore a utilização da CPU e da memória de ambos os servidores, WebSphere Application Server e de banco de dados, para assegurar-se de que não esteja saturando a CPU ou a memória.

Enfileiramento e beans corporativos

As chamadas de métodos para os beans corporativos serão colocadas na fila somente se o cliente que estiver fazendo a chamada do método for remoto. Por exemplo, se o cliente EJB estiver sendo executado em um Java Virtual Machine separado (outro espaço de endereçamento) do bean corporativo. Por outro lado, se o cliente EJB (um servlet ou outro bean corporativo) estiver instalado na mesma JVM, o método EJB será executado no mesmo thread de execução que o cliente EJB e não haverá enfileiramento.

Os beans corporativos remotos se comunicam utilizando o protocolo RMI/IIOP. As chamadas de métodos iniciadas no RMI/IIOP são processadas por um ORB do lado do servidor. O conjunto de threads age como uma fila para pedidos de entrada. Entretanto, se um pedido de método remoto for emitido e não houver mais threads disponíveis no conjunto de threads, um novo thread será criado. Depois que o pedido de método for concluído, o thread será destruído. Portanto, quando o ORB for utilizado para processar pedidos de métodos remotos, o contêiner de EJB será uma fila aberta, porque o seu uso de threads está livre. A ilustração a seguir descreve as duas opções de enfileiramento de beans corporativos.

Ao configurar o conjunto de threads, é importante entender os padrões de chamada do cliente EJB. Se um servlet estiver fazendo um pequeno número de chamadas a beans corporativos remotos e cada chamada de método for relativamente rápida, pense em definir o número de threads no conjunto de threads do ORB com um valor menor do que o valor para o tamanho do conjunto de threads do contêiner da Web.

O Analisador de Recursos mostra uma métrica chamada porcentagem máxima utilizada para determinar quanto tempo todos os threads configurados estão em uso. Se esse valor estiver consistentemente nos dígitos duplos, o ORB poderá ser um gargalo e o número de threads deverá ser aumentado.

O grau com que se deve aumentar o valor do conjunto de threads do ORB é uma função do número de servlets simultâneos (isto é, clientes) chamando beans corporativos e a duração de cada chamada de método. Se as chamadas de método forem muito longas, pense em tornar o tamanho do conjunto de threads do ORB igual ao tamanho do contêiner da Web, porque há pouca intercalação de chamadas de métodos remotas. Se seu servlet fizer somente chamadas de pequena duração ou rápidas para o ORB, o conjunto de threads do ORB poderá ser pequeno. Vários servlets podem reutilizar o mesmo thread do ORB potencialmente. Nesse caso, o conjunto de threads do ORB pode ser pequeno, talvez até metade da definição de tamanho do conjunto de threads do contêiner da Web. Se seu aplicativo gastar muito tempo no ORB, configure um relacionamento mais equilibrado entre o contêiner da Web e o ORB.

Enfileiramento e criação de clusters

Os recursos de clonagem dos servidores de aplicativos podem ser um item importante na configuração de ambientes de produção altamente escaláveis. Isso é verdadeiro especialmente quando o aplicativo está enfrentando gargalos que estão impedindo a total utilização da CPU de servidores SMP (Symmetric Multiprocessing). Ao ajustar as filas do sistema do WebSphere Application Server em configurações de clusters, lembre-se de que quando um servidor é incluído em um cluster, o servidor downstream recebe o dobro da carga.

Dois clones do contêiner da Web estão localizados entre um servidor Web e uma origem de dados. Podemos assumir que o servidor Web, os mecanismos de servlet e a origem de dados (mas não o banco de dados) estão em execução em um único servidor SMP. Dadas estas limitações, precisam ser feitas as seguintes considerações sobre a fila:

Ajustando o Secure Socket Layer

Os itens a seguir são dois tipos de desempenho de SSL (Secure Socket Layer):

Visão geral do protocolo de reconhecimento e criptografia/decriptogradia em massa

Quando uma conexão SSL é estabelecida, entra em ação um protocolo de reconhecimento de SSL. Após ser feita uma conexão, a SSL executa a criptografia e decriptografia em massa para cada leitura-gravação. O custo do desempenho de um protocolo de reconhecimento de SSL é maior do que da criptografia e decriptografia em massa.

Como melhorar o desempenho de SSL

Para melhorar o desempenho de SSL, o número de conexões SSL individuais e de protocolos de reconhecimento deve ser reduzido.

A redução do número de conexões aumenta o desempenho para comunicação segura através de conexões SSL, bem como comunicação não-segura através de conexões simples de TCP. Uma maneira de diminuir as conexões SSL individuais é utilizar um navegador que suporta HTTP 1.1. A redução de conexões SSL individuais poderá se impossível para alguns usuários, se elas não puderem atualizar para HTTP 1.1.

É mais comum diminuir o número de conexões (TCP e SSL) entre dois componentes do WebSphere Application Server. As instruções a seguir que ajudam a garantir o transporte HTTP do servidor de aplicativos é configurada, para que o plug-in do servidor Web não reabra repetidamente novas conexões ao servidor de aplicativos:

Tamanho da cache de instrução preparada

Outros parâmetros JDBC
Além de definir o tamanho da cache de instrução preparada, você pode definir outras propriedades específicas dos drivers JDBC. Por exemplo, utilizando o Oracle, você pode aumentar o número de linhas a serem buscadas enquanto obtém conjuntos de resultados com a seguinte instrução:
name="defaultRowPrefetch", value="25"
Digite esses tipos de propriedades personalizadas na guia Geral do banco de dados.

DB2

O DB2 possui vários parâmetros que podem ser configurados para otimizar o desempenho do banco de dados. Para obter informações completas sobre ajustes do DB2, consulte o DB2 UDB Administration Guide and Performance.
Utilizar soquetes TCP para DB2 no Linux
DB2 MaxAppls
DB2 MaxAgents
DB2 buffpage
Nível de otimização de consulta do DB2
reorgchk do DB2
MinCommit do DB2

Gerenciamento de sessão

Para obter informações adicionais sobre a definição dos parâmetros de gerenciamento de sessão, consulte o artigo InfoCenter 4.4.1.1 Modelo e ambiente de programação da sessão.

WebSphere Application Server Enterprise Extensions Message Listener

O WebSphere Application Server Enterprise Extensions fornece suporte para o Suporte de Mensagens Estendidas. Essa seção contém sugestões de ajuste para a função JMS Listener que é parte do Extended Messaging Support.

Número máximo de sessões

Vários servidores de aplicativos sendo recebidos na mesma fila

Referências adicionais

Procedimentos da ferramenta de desempenho

Iniciando o Monitor de Desempenho do Windows NT/2000

Siga estas etapas:
No menu Iniciar, escolha Programas > Ferramentas Administrativas > Monitor de Desempenho