 | Nível: Intermediário Martin Presler-Marshall, Performance Analyst, IBM Laura Yen, Performance Analyst, IBM Daniel Edwin, Software Engineer, Sun Microsystems Inc.
21/Jul/2009 O IBM® WebSphere® Portal pode ser executado em vários sistemas com arquiteturas totalmente diferentes. Arquiteturas com um grande número de processadores podem ser um desafio: como obter bom desempenho nesses sistemas? Este artigo descreve a experiência da equipe de desempenho do WebSphere Portal, mostrando como configuramos o sistema para usar bem os recursos disponíveis. Ele é voltado para administradores ou arquitetos de sistema experientes, no caso de implementações de WebSphere Portal em um ambiente Sun Solaris embora as lições básicas do artigo também se apliquem a outras plataformas.
Nota do editor: Conhece muito esse tópico? Deseja compartilhar seu conhecimento? Participe hoje do programa wiki de software IBM Lotus.
Introdução
Os sistemas modernos de servidor avançaram muito em relação aos sistemas de soquete único e soquete duplo do passado. Hoje em dia, a maioria dos servidores usados em aplicativos comerciais tem um ou mais processadores multinúcleo. O multiencadeamento de hardware, como hyperthreading ou multiencadeamento simultâneo, torna o ambiente mais complexo, acrescentando mais encadeamentos de hardware. Embora o multiencadeamento de hardware já seja usado há muitos anos, agora há sistemas disponíveis que levam essa capacidade para um novo nível, combinando muitos núcleos com alto nível de multiencadeamento de hardware para permitir executar centenas de encadeamentos simultâneos de computação. Um exemplo disso é o servidor Sun CoolThreads, que usa os processadores UltraSPARC T1, T2 e T2 Plus para dar suporte a até 256 encadeamentos simultâneos de computação.
Esse desenvolvimento traz uma questão importante: Quando se trata de sistemas com centenas de encadeamentos simultâneos de computação, o software consegue usar plenamente esse hardware? Examinamos essa questão usando o WebSphere Portal V6.1 executado em um sistema Sun T5240 com 16 núcleos de processador, com suporte a 128 encadeamentos simultâneos de computação. Tentamos diversas abordagens nesse ambiente antes de encontrar uma que resultou em boa utilização do sistema. Este artigo trata das abordagens tentadas, dos resultados das medições dessas configurações, além do ajuste e da configuração usados para obter nossos resultados.
Descrição da medição
Este cenário é fornecido como modelo de portal em um ambiente de intranet corporativa. Em um ambiente desses, esperamos que os usuários estejam designados a grupos, talvez de acordo com a função de trabalho ou com base em limites organizacionais. Parte do conteúdo desse portal, por exemplo, lugares, páginas e aplicativos, só está disponível a grupos específicos, enquanto outra parte do conteúdo está disponível a todos os usuários autenticados. Apenas um pequeno número de páginas está disponível a usuários não autenticados. Nesse cenário, a maioria dos usuários efetua login no site.
O conteúdo desse cenário é fornecido por alguns portlets simples criados especificamente para esse cenário. O conjunto de portlets desenvolvidos para essas medições usa o API definido no Java™ Portlet Specification 1.0. Nenhum dos portlets usa banco de dados, fonte de conteúdo de rede ou outro sistema externo; em vez disso, esses portlets geram todo o seu conteúdo a partir de entradas codificadas permanentemente.
As interações com o usuário são simuladas por meio de um script de usuário virtual. Cada iteração desse script simula um único usuário interagindo com o site e consiste em múltiplas visualizações de página. Um usuário virtual executa muitas iterações do script durante uma medição. Cada visualização de página no script é considerada uma única transação. Medimos os tempos de resposta de cada transação e a taxa de transação total.
O objetivo da medição é encontrar a mais alta capacidade do sistema, que é definida como a mais alta taxa de transação na qual os tempos de resposta ainda atendem aos nossos critérios.
Ambiente de medição
No nosso ambiente de medição, usamos um servidor de banco de dados separado, um servidor de diretório, um servidor HTTP e o servidor Gerenciador de Implementação. Todos esses servidores são em adição ao sistema principal que está sendo testado, o servidor de aplicativos. São esses os servidores mostrados na figura 1.
Figura 1. Diagrama do ambiente de medição do WebSphere Portal V6.1 em T5240
Configurações de medição
Tentamos três configurações no nosso ambiente de laboratório. Além disso, há uma quarta configuração que pode fazer sentido nesse ambiente:
- Servidor de aplicativos independente. A implementação mais simples é a do WebSphere Portal em uma única Java virtual machine (JVM) no nó de servidor de portal.
- Ambiente em cluster vertical. O cluster vertical usa os recursos de armazenamento em cluster do IBM WebSphere Application Server para implementar múltiplas Java virtual machines, todas executadas no WebSphere Portal, em um único sistema.
- Ambiente em cluster vertical com conjuntos de processadores. Essa configuração pega a configuração de cluster vertical do item anterior e liga cada processador a um subconjunto de encadeamentos de computação disponíveis.
- A virtualização Solaris usa zonas para fornecer um cluster horizontal. Não incluímos essa configuração em nossas medições de laboratório, mas ela fornece um modo adicional de separar cada JVM de servidor de aplicativos de outros que estejam sendo executados no mesmo servidor físico.
Resultados e observações de medição
Nessas medições, calculamos a capacidade relativa dessas três configurações. Usamos a configuração de capacidade mais baixa e o servidor de aplicativos independente como nosso ponto de linha de base e depois comparamos a capacidade de outras duas configurações com essa linha de base. Essa comparação, mostrada na figura 2, facilita ver a melhoria de capacidade apresentada por essas configurações.
Figura 2. Rendimento relativo do WebSphere Portal V6.1 em T5240
Definimos a capacidade como o nível de carga mais alto no qual todas as transações forneceram tempos de resposta aceitáveis. Assim, o sistema muitas vezes alcança a capacidade antes de o processador ser plenamente utilizado. Observamos as cargas do processador no sistema de portal nas medições mostradas na figura 3.
Figura 3. Utilização de processador do WebSphere Portal V6.1 em T5240
Fizemos as seguintes observações nas configurações alvo:
 |
Usando conjuntos de recursos no Solaris
Os conjuntos de recursos do Solaris permitem agrupar vários processadores em um conjunto e ligar este com um processo Java. Usamos conjuntos de processadores para particionar processadores virtuais.
Em nossos experimentos, descobrimos que o uso mais eficiente para nosso cenário era ligar 21 encadeamentos de computação a uma JVM. Criamos um cluster vertical com seis membros do WebSphere Portal e depois ligamos cada membro a um conjunto de processadores Solaris. O número "certo" de encadeamentos de computação (e, portanto, os membros de WebSphere Portal) pode variar de acordo com o aplicativo, mas esperamos que quatro a seis membros forneçam bom desempenho para a maioria dos aplicativos WebSphere Portal.
Use os seguintes comandos Solaris e siga estas etapas para fazer a configuração:
- Insira
pooladm –e para ativar o recurso de conjunto.
- Insira
pooladm –s para criar um arquivo de configuração estático que combine com a configuração dinâmica atual.
- Insira
poolcfg –c para criar wp_pset1 (unidade pset.min=20; unidade pset.max =21)’ para criar um conjunto de processadores chamado wp_pset1 com 20 a 21 processadores. Crie um conjunto de processadores para cada JVM de servidor de aplicativos, cada um com seu próprio nome.
- Insira
poolcfg –c para criar pool wp_pool1’ para criar um conjunto de recursos chamado wp_pool1. Crie um conjunto de recursos para cada conjunto de processador criado na etapa anterior, com nomes exclusivos para cada conjunto.
- Insira
poolcfg –c ‘associate pool wp_pool1(pset wp_pset1)’ para associar o conjunto de recursos com o conjunto de processadores. Use esse comando para cada conjunto de processador/par de conjunto de recursos.
Os nomes usados acima para conjuntos de processadores e de recursos são arbitrários; os requisitos são que o nome do conjunto de processadores seja compatível com o nome do conjunto de recursos na etapa 5, e o nome do conjunto de recursos deve ser usado ao ligar a JVM ao conjunto de recursos na etapa 9.
- Insira
pooladm –c para executar a configuração em /etc/pooladm.conf.
- Ligue os membros de cluster do WebSphere Portal a partir do console de administração do WebSphere Application Server.
- Localize os IDs do processo para as JVMs do WebSphere Portal com o comando
ps –ef | grep java. Há um ID de processo separado para cada JVM.
- Insira
poolbind –p wp_pool1 PortalPID. Esse comando liga o processo selecionado a um conjunto de recursos. Repita esse comando para cada JVM do portal, usando um conjunto de recursos separado para cada processo JVM.
Se o WebSphere Portal for reiniciado, será preciso executar o comando poolbind com o novo ID de processo do WebSphere Portal. As etapas 1-6, porém, não precisam ser repetidas.
Podem ser encontradas mais informações sobre esses comandos no conjunto de documentação Solaris, Guia de Administração do Sistema: Gerenciamento de Recurso de Contêineres Solaris e Zonas Solaris em http://docs.sun.com.
Ajuste de servidor do WebSphere Portal
Instalamos o WebSphere Portal com a JVM padrão de 64 bits em Solaris, executada em kernel de 64 bits. O grande espaço de endereço de uma JVM de 64 bits permite um tamanho de heap grande; descobrimos que um heap de 3.5 GB fornece bom desempenho para esse aplicativo. Outros aplicativos podem ter seu desempenho otimizado com tamanhos de heap diferentes.
Todos os detalhes de ajuste para essa medição, abrangendo servidor de aplicativos, kernel Solaris, rede e outros componentes, são mencionados no Guia de Ajuste do WebSphere Portal, disponível em Guia de Ajuste do IBM WebSphere Portal Versão 6.1.x.
A Tabela 1 alista as principais configurações de ajustes para esse ambiente.
Tabela 1. Configurações de ajuste
| Argumento | Função |
|---|
| -Xmx3584M | Esse argumento determina o tamanho máximo de heap Java como 3.5 GB. |
|---|
| -Xmn768M | A nova área do heap foi determinada como 768 MB. |
|---|
| -server | A HotSpot VM é selecionada por esse argumento. Essa VM normalmente fornece o melhor desempenho para aplicativos baseados em servidor, como o WebSphere Portal. |
|---|
| -XX:MaxPermSize=768M | Em um heap de 64 bits, é preciso uma grande região permanente no heap; esse argumento permite que a região permanente aumente para 768 MB. |
|---|
| -XX:+UseConcMarkSweepGC | Use a coleta de tempo de acesso de marca simultânea (UseConcMarkSweepGC) para geração com aforamento. O aplicativo é pausado por períodos curtos durante a coleta. Descobrimos que esse coletor forneceu os tempos de resposta mais estáveis |
|---|
| -XX:+UseParNewGC | Por padrão, o coletor de pausa baixa simultânea usa um coletor de cópia de geração nova de encadeamento único. Esse argumento permite a coleta paralela da nova área do heap, fornecendo melhor utilização dos encadeamentos de computação disponíveis. |
|---|
| -XX:SurvivorRatio=6 | A proporção restante ajusta a distribuição de espaços dentro da nova área do heap. Esse argumento ajuda a usar de forma mais eficiente essa nova área. |
|---|
| -XX:ParallelGCThreads=5 | No sistema baseado em processador com multiencadeamento de chip, o número de encadeamentos de coleta de lixo (GC) não deve ser maior que um quarto do total de encadeamentos de computação. Nosso sistema tem 128 encadeamentos de computação, de modo que devemos usar 32 (128/4) encadeamentos de GC. Distribuímos esses 32 encadeamentos de GC por 6 JVMs, no total de 5 (32/6) encadeamentos de GC por JVM. |
|---|
 |
Comentários sobre o aplicativo
Qualquer ambiente com um grande número de encadeamentos de computação tem a possibilidade de encontrar problemas de desempenho se houver uma quantidade significativa de bloqueios dentro do aplicativo. Esse problema é exagerado em um ambiente como o Sun T5240. Visto que cada encadeamento de computação é um processador virtual relativamente lento, esse tipo de arquitetura de processador muitas vezes mantém os bloqueios por mais tempo do que em arquiteturas de processador mais convencionais.
Foi feito esforço significativo no WebSphere Portal V6.1 para reduzir o bloqueio dentro da estrutura do WebSphere Portal, reduzindo problemas de desempenho devido a bloqueio. O WebSphere Portal é uma estrutura de aplicativo que pode ser usada para executar uma grande variedade de aplicativos. Se os aplicativos (portlets) usados tiverem quantidades significativas de bloqueio, este pode se tornar um gargalo para o desempenho.
Conclusão
O WebSphere Portal pode ser executado em vários sistemas com arquiteturas totalmente diferentes. Os resultados mostrados aqui demonstram que ele pode alcançar boa capacidade em um sistema com grande número de encadeamentos de computação. Este artigo também explicou o ajuste e a configuração necessários para alcançar essa capacidade.
Recursos
Sobre os autores  | |  | Martin Presler-Marshall trabalha para otimizar o desempenho do WebSphere Portal e produtos relacionados. Ele escreveu o guia de resolução de problemas do WebSphere Portal além de contribuir para os guias de ajuste do WebSphere Portal. É possível entrar em contato com ele pelo e-mail mpresler@us.ibm.com. |
 | |  | Laura Yen é engenheira de desempenho da equipe de desempenho do WebSphere nas instalações de Research Triangle Park da IBM. É possível entrar em contato com ela pelo e-mail lyen@us.ibm.com. |
 | |  | Daniel Edwin gerencia o relacionamento técnico entre software Sun e IBM. Suas áreas de atuação incluem a otimização do desempenho e dimensionamento de software IBM para Sistemas Sun Solaris. Ele se interessa por código Java, Java EE, Solaris OS e ajuste de sistemas. |
Avalie esta página
|  |