WebSphere Real Time em um Ambiente Independente

É possível usar o WebSphere Real Time com o WebSphere eXtreme Scale. Ao ativar o WebSphere Real Time, é possível obter uma coleta de lixo mais previsível com um tempo de resposta e rendimento estável e consistente em um ambiente independente do eXtreme Scale.

Vantagens do WebSphere Real Time

WebSphere eXtreme Scale cria vários objetos temporários que são associados a cada transação. Esses objetos temporários lidam com pedidos, respostas, sequências de log e sessões. Sem o WebSphere Real Time, o tempo de resposta de transação pode ultrapassar centenas de milissegundos. Entretanto, usar o WebSphere Real Time com o WebSphere eXtreme Scale pode aumentar a eficiência da coleta de lixo e reduzir o tempo de resposta em 10% do tempo de resposta de configuração independente.

Ativando o WebSphere Real Time

Instale o WebSphere Real Time e o WebSphere eXtreme Scale independente nos computadores onde você planeja executar o eXtreme Scale . Configure a variável de ambiente JAVA_HOME para apontar para o Java SE Runtime Environment (JRE) padrão.

Configure a variável de ambiente JAVA_HOME para apontar para o WebSphere Real Time instalado. Em seguida, ative o WebSphere Real Time da seguinte forma.

  1. Edite o arquivo de instalação padrão objectgridRoot/bin/setupCmdLine.sh | .bat ao remover o comentário da seguinte linha.

    WXS_REAL_TIME_JAVA="-Xrealtime -Xgcpolicy:metronome -Xgc:targetUtilization=80"

  2. Salve o arquivo.

Agora você ativou o WebSphere Real Time. Se desejar desativar o WebSphere Real Time, poderá incluir o comentário de volta para a mesma linha.

Práticas Recomendáveis

WebSphere Real Time permite que transações do eXtreme Scale tenham um tempo de resposta mais previsível. Os resultados mostram que o desvio de um tempo de resposta de uma transação do eXtreme Scale aumenta significativamente com o WebSphere Real Time em comparação com o Java padrão com seu coletor de lixo padrão. A ativação do WebSphere Real Time com o eXtreme Scale é ótima se a estabilidade e o tempo de resposta de seu aplicativo forem essenciais.

As boas práticas descritas nesta seção explicam como tornar o WebSphere eXtreme Scale mais eficiente por meio do ajuste e de práticas de código dependendo de sua carga esperada.

  • Configure o nível de uso correto do processador para o aplicativo e coletor de lixo.

    O WebSphere Real Time fornece a capacidade de controlar o uso do processador para que o impacto da coleta de lixo em seu aplicativo seja controlado e minimizado. Use o parâmetro -Xgc:targetUtilization=NN para especificar a porcentagem NN do processador que é usado pelo aplicativo a cada 20 segundos. O padrão para WebSphere eXtreme Scale é 80%, mas é possível modificar o script no arquivo objectgridRoot/bin/setupCmdLine.sh para configurar um número diferente, como 70, que fornece mais capacidade de processador para o coletor de lixo. Implemente servidores suficientes para manter a carga do processador abaixo de 80% para seus aplicativos.

  • Configure um tamanho maior de memória de heap.

    O WebSphere Real Time usa mais memória do que o Java comum, assim, planeje seu WebSphere eXtreme Scale com uma memória de heap e configure o tamanho de heap ao iniciar os servidores de catálogo e os contêineres com o parâmetro –jvmArgs –XmxNNNM no comando ogStartServer. Por exemplo, é possível usar o parâmetro –jvmArgs –Xmx500M para iniciar os servidores de catálogo e usar o tamanho de memória apropriado para iniciar os contêineres. O tamanho de memória pode ser configurado de 60 a 70% do tamanho de dados esperado por JVM. Se você não configurar esse valor, ocorrerá um erro OutOfMemoryError. Opcionalmente, use o parâmetro –jvmArgs –Xgc:noSynchronousGCOnOOM para evitar um comportamento indesejável quando a JVM ficar sem memória.

  • Ajuste os encadeamentos para a coleta de lixo.

    O WebSphere eXtreme Scale cria muitos objetos temporários associados a cada transação e encadeamentos Remote Procedure Call (RPC). A coleta de lixo possui benefícios de desempenho se o computador tiver ciclos de processadores suficientes. O número padrão de encadeamentos é 1. É possível alterar o número de encadeamentos com o argumento –Xgcthreads n. O valor sugerido para esse argumento é o número de núcleos que estão disponíveis em relação ao número de Java virtual machines por computador.

  • Ajuste o desempenho para aplicativos de curta duração com oWebSphere eXtreme Scale.

    O WebSphere Real Time é ajustado para aplicativos de execução longa. Geralmente, é necessário executar transações contínuas do WebSphere eXtreme Scale por duas horas para obter dados de desempenho confiáveis. É possível usar o parâmetro –Xquickstart para melhorar o desempenho de aplicativos de curta duração. Esse parâmetro informa ao compilador just-in-time (JIT) para usar um nível menor de otimização.

  • Minimize a fila do cliente do WebSphere eXtreme Scale e a retransmissão do cliente do WebSphere eXtreme Scale.

    A principal vantagem de usar o WebSphere eXtreme Scale com o WebSphere Real Time é que o tempo de resposta da transação é altamente confiável, o que normalmente representa várias vezes melhorias na magnitude de ordem no desvio do tempo de resposta da transação. Todos os pedidos do cliente enfileirados e retransmissões de pedido do cliente por meio de outro software afetam o tempo de resposta que está além do controle do WebSphere Real Time e do WebSphere eXtreme Scale. É necessário alterar seus encadeamentos e parâmetros de soquete para manter uma carga estável e leve sem nenhum atraso significativo e diminuição da profundidade da fila.

  • Escreva aplicativos WebSphere eXtreme Scale para usar o encadeamento do WebSphere Real Time.

    Sem modificar seu aplicativo, é possível obter tempo de reposta de transação WebSphere eXtreme Scale altamente confiável com diversas melhorias da magnitude de ordem no desvio do tempo de resposta. É possível explorar ainda mais a vantagem do encadeamento de seus aplicativos transacionais a partir do encadeamento Java normal para RealtimeThread o que oferece melhor controle sobre a prioridade de encadeamento e controle de planejamento.

    Seu aplicativo atualmente inclui o código a seguir.

    public class WXSCacheAppImpl extends Thread implements WXSCacheAppIF

    É possível substituir opcionalmente este código pelo seguinte.

    public class WXSCacheAppImpl extends RealtimeThread implements WXSCacheAppIF