Configurando o IBM eXtremeMemory e o IBM eXtremeIO

Ao configurar o eXtremeMemory, é possível armazenar os objetos na memória nativa em vez de armazenar no heap Java. Configurar o eXtremeMemory ativa o eXtremeIO como um novo mecanismo de transporte. Movendo objetos para fora do heap Java, é possível evitar pausas da coleta de lixo, levando ao desempenho mais constante e tempos de resposta atribuíveis.

Antes de Iniciar

Sobre Esta Tarefa

A JVM conta com a heurística de uso para coletar, compactar e expandir a memória do processo. O coletor de lixo conclui estas operações. No entanto, executar a coleta de lixo tem um custo associado. O custo de executar a coleta de lixo aumenta conforme o tamanho do heap Java e o número de objetos no aumento da grade de dados. A JVM fornece heurísticas diferentes para diferentes casos de uso e objetivos: rendimento ideal, tempo de pausa ideal, coleta de lixo de geração, balanceada e em tempo real. Nenhuma heurística é perfeita. Uma única heurística não pode se adequar a todas as configurações possíveis.

O WebSphere eXtreme Scale usa armazenamento em cache de dados, com mapas distribuídos que possuem entradas com um ciclo de vida bem conhecido. Este ciclo de vida inclui as seguintes operações: GET, INSERT, DELETE e UPDATE. Usando estes ciclos de vida de mapa bem conhecidos, o eXtremeMemory e o eXtremeIO podem usar memória de forma mais eficiente do que as heurísticas de uso da JVM.

O diagrama a seguir mostra como o uso de eXtremeMemory leva a tempos de resposta relativos mais consistentes no ambiente. Conforme os tempos de resposta relativos atingem o percentual mais alto, as solicitações que estão usando o eXtremeMemory têm os tempos de resposta relativos inferiores. O diagrama mostra os percentis de 95 a 100.

.
Figura 1. Comparação de eXtremeMemory e Tempos de Resposta de Armazenamento Heap
O tempo de resposta relativo fica mais alto à medida que aumenta o percentil de tempo de resposta. Os tempos de resposta relativos são muito mais inferiores para o eXtremeMemory do que Heap.
Quando você estiver usando o eXtremeMemory, o eXtremeIO é usado para comunicação entre os servidores de contêiner. Os objetos são serializados em bytes no servidor de contêiner. Para ativar o eXtremeIO e eXtremeMemory, configure as propriedades do servidor necessárias em todos os servidores de contêiner na grade de dados e reinicie os servidores.

Procedimento

  1. Opcional: Determine o valor da propriedade maxXMSize apropriado a ser usado.
    1. Em sua configuração existente, determine o tamanho por entrada. Execute o comando xscmd -c showMapSizes para determinar este tamanho.
    2. Calcule o valor de maxXMSize. Para obter tamanho total máximo de entradas (maximum_total_size), multiplique a size_per_entry * maximum_number_of_entries. Use no máximo 60% de maxXMSize para a conta para processamento de metadados. Multiplique maximum_total_size* 1.65 para obter o valor de maxXMSize.
  2. Atualize o arquivo de propriedades do servidor para cada servidor de contêiner na configuração para ativar o novo transporte. As seguintes propriedades do servidor ativam o novo transporte:
    Propriedades Obrigatórias
    enableXM
    Quando configurado para true, ativa o IBM® eXtremeMemory no servidor e configura o servidor para usar o IBM eXtremeIO para replicação síncrona e assíncrona. As entradas de cache são armazenadas na memória nativa em vez de serem armazenadas no heap Java. Todos os servidores de contêiner na grade de dados devem usar o mesmo valor para a propriedade enableXM.

    Padrão: false

    Propriedades Sugeridas
    maxXMSize
    Define a quantia máxima de memória, em megabytes, usada pelo servidor para armazenamento do eXtremeMemory.

    Padrão: 25% do total de memória no sistema

    Propriedades Opcionais
    maxXIONetworkThreads
    Configura o número máximo de encadeamentos para alocar no conjunto de encadeamentos de rede de transporte eXtremeIO.

    Padrão: 50

    minXIONetworkThreads
    Configura o número mínimo de encadeamentos para alocar no conjunto de encadeamentos de rede de transporte eXtremeIO.

    Padrão: 50

    maxXIOWorkerThreads
    Configura o número máximo de encadeamentos para alocar no conjunto de encadeamentos de processamento de solicitação de transporte eXtremeIO.

    Padrão: 128

    minXIOWorkerThreads
    Configura o número mínimo de encadeamentos para alocar no conjunto de encadeamentos de processamento de solicitação de transporte eXtremeIO.

    Padrão: 128

    xioChannel.xioContainerTCPNonSecure.Port
    Especifica o número de porta listener não segura do eXtremeIO no servidor. Se esse valor não for configurado, uma porta temporária será usada. Esta propriedade é usada somente quando a propriedade transportType é configurada como TCP/IP.
    xioChannel.xioContainerTCPSecure.Port
    Especifica o número de porta SSL do eXtremeIO no servidor. Esta propriedade é usada somente quando a propriedade transportType é configurada como SSL-Supported ou SSL-Required.
  3. Reinicie os servidores de contêiner para começar a usar o novo mecanismo de transporte. Para obter mais informações, consulte Iniciando e Parando Servidores Independentes e Iniciando e Parando Servidores em um Ambiente do WebSphere Application Server.