[z/OS]

Configurações do Regulador MDB para Beans Acionados por Mensagens no z/OS

É possível ajustar uma variedade de configurações para o "regulador MDB", para controlar a quantidade de trabalho do MDB processada pelo servidor em um determinado momento.

As seguintes questões afetam sua opção de configuração do regulador MDB:

Regulador MDB - Limites Alto e Baixo

Nota: Este tópico supõe que você esteja mapeando uma única porta listener para qualquer destino especificado. Embora os valores do limite do gargalo sejam calculados individualmente para cada porta listener, existe apenas um único agente de fila para cada destino independentemente do número de portas listener. Por exemplo, quando as portas listener A e B forem mapeadas para a fila Q, se a porta listener B atingir o limite baixo, ela liberará o gargalo no único encadeamento do agente de fila para a fila Q, mesmo que a porta listener A tenha atingido seu limite alto (e, por isso, talvez esteja bloqueando se as portas listener tiverem sido mapeadas para destinos separados). Mais especificamente, você não pode mapear várias portas listener para um único destino e configurar um limite alto de 1 em cada porta listener se desejar executar o processamento serial nos beans acionados por mensagens em cada porta listener. Por causa dessa restrição, é recomendável que você mapeie apenas uma única porta listener para cada destino.

O suporte de regulador MDB mantém uma contagem do número atual de mensagens executadas para cada porta listener.

Quando uma referência de mensagem for enviada para o MRH, a contagem em andamento será incrementada em 1. Em seguida, ela será comparada em relação ao valor do limite alto dessa porta listener.
  • Se a contagem em andamento for menor ou igual ao valor de limite alto, um registro de trabalho será enfileirado na fila do WLM.
  • Se a contagem em andamento exceder o valor do limite alto, o encadeamento de agentes da fila que está executando o MRH ficará bloqueado e entrará no estado de espera. Ou seja, o regulador está "bloqueando".

A contagem em andamento diminuirá em 1 sempre que o controlador for notificado que um registro de trabalho para essa Porta Listener foi concluído (independentemente de a transação do aplicativo ter sido consolidada). Depois de diminuída, a contagem em andamento será verificada em relação ao valor do limite baixo para essa Porta Listener. A contagem em andamento fica abaixo do valor de limite baixo; o encadeamento de agentes da fila bloqueado anteriormente é ativado (notificado). Desse modo, novos registros de trabalho podem ser enfileirados na fila do WLM. Ou seja, o regulador foi "liberado".

Os valores de limite alto e baixo são definidos externamente por uma configuração, o parâmetro Número máximo de sessões da porta listener. O valor de limite alto é definido internamente igual ao valor de Número máximo de sessões definido externamente. O valor de limite baixo é calculado e definido internamente pela fórmula: limite baixo = (limite alto / 2), com o valor arredondado para o inteiro mais próximo.

Como um exemplo, suponha que o parâmetro Número máximo de sessões esteja configurado para 2 em que o limite alto é 2 e o limite baixo é 1. Segue um resumo do processamento:
  • O controlador começa a processar outra mensagem, a contagem em andamento é configurada para 3, que excede o limite alto e faz com que o encadeamento do controlador pause até que o limite baixo seja atingido.
  • O MDB no servidor para a primeira mensagem retorna e a contagem em andamento é diminuída de 3 para 2 e, portanto, NÃO atingiu o limite baixo.
  • O MDB no servidor para a segunda mensagem retorna e a contagem em andamento é diminuída de 2 para 1. O limite baixo é atingido e o processamento de mensagens e seu despacho para o SR continua.
Usando um valor de parâmetro Número máximo de sessões de 2 significa que uma vez que o limite alto seja excedido no controlador, mais nenhuma mensagem será processada até que os MDBs tenham sido concluídos no servidor.

No entanto, se o serviço de Listener de Mensagens tiver sido configurado com a propriedade customizada de MDB.THROTTLE.THRESHOLD.LOW.EQUALS.HIGH definida e configurada com um valor de "true", o valor do limite baixo será configurado internamente para o valor do limite alto (que é a propriedade Número máximo de sessões configurada externamente da porta do listener).

Nota: Um encadeamento de agentes de fila é estabelecido para cada destino, em vez de para cada porta listener. Portanto, se duas portas listener forem mapeadas para a mesma fila, uma condição de bloqueio de regulador em uma porta listener também resultará em um bloqueio do enfileiramento de registros de trabalho da segunda porta listener. A segunda porta listener será bloqueada mesmo que não tenha atingido seu valor de limite alto. Para maior clareza, não compartilhe um destino em mais de uma porta listener.

Regulador MDB - Ajustando

Você deve configurar o valor "Número máximo de sessões" da porta listener com o dobro do número de encadeamentos trabalhadores disponíveis em todos os servidores no servidor escalável (2*WT) para que, se houver um encadeamento trabalhador disponível em algum servidor, ele não fique inativo por causa de um regulador MDB bloqueado. Isto é, não desejará ter uma fila vazia do WLM, um encadeamento de trabalhadores do servant disponível e um regulador bloqueado.

Com a recomendação básica de utilizar o valor 2*WT, um regulador bloqueado será liberado no momento em que as seguintes condições forem verdadeiras:
  • Há um encadeamento de trabalhadores livre do servant
  • Não há nada na fila do WLM
  • Há uma referência de mensagem procurada, mas para a qual um pedido de trabalho não foi incluído na fila do WLM (o regulador bloqueado no lugar)

Além disso, a configuração do limite alto para 2*(WT+N) permite assegurar que, no momento em que um encadeamento de trabalhadores do servant seja liberado e libere o regulador, haja uma lista não processada de mensagens N pré-processadas e esperando na fila do WLM prontas para dispatch. No entanto, configurar um valor muito alto introduz o problema de sobrecarga da fila do WLM para o qual o regulador foi introduzido para evitar. Observe que este cenário assume que a fila (ou o tópico) está totalmente carregada com mensagens para processamento.

Portanto, aumentar o valor do limite alto permite que o servidor crie uma pequena lista não processada de mensagens pré-processadas esperando na fila do WLM no caso de ocorrer um pico de carga de trabalho. Entretanto, aumentar o valor do limite alto também aumenta a chance de expiração de um registro de trabalho de uma determinada mensagem antes de o aplicativo ser despachado com a mensagem especificada. Isto é, o servidor pode atingir o Tempo Limite do MDB. A mensagem especificada é eventualmente reenviada ao servidor, mas apenas posteriormente, e o processamento concluído até aquele momento seria perdido. Além disso, um valor de limite muito alto ignoraria efetivamente a função do regulador MDB e, nesse caso, a fila do WLM poderia ser sobrecarregada; isso causaria a falha do servidor.

Regulador MDB - Ajuste Alternativo

Embora o servidor escalável tenha sido projetado com o objetivo de maximizar o rendimento do processamento, é possível utilizar as configurações da porta listener para alcançar outros objetivos de gerenciamento do fluxo de trabalho.

Por exemplo, uma configuração de limite alto de ‘1' garante que as mensagens sejam processadas na ordem em que são recebidas no destino.

Também é possível que haja outras razões comerciais, com base na capacidade ou em outros fatores, para restringir uma determinada porta listener a uma concorrência muito menor do que o servidor poderia suportar, se fosse de outra forma. Embora, certamente, essa seja uma configuração suportada, ela pode causar o bloqueio do regulador quando há encadeamentos de trabalhadores inativos disponíveis.

Exemplo de Regulador MDB

Suponha que o servidor seja configurado com o valor máximo de instâncias do servidor definido como 3, com o perfil da carga de trabalho de IOBOUND. Você tem duas CPUs; sendo assim, o WebSphere Application Server criará seis encadeamentos de trabalhador em cada servant. Seu aplicativo (um único MDB mapeado para uma fila) trata cada mensagem relativamente rápido (para que haja menos risco de tempo limite) e você deseja o tempo total da chegada de uma determinada mensagem na fila do MDB até o final do dispatch do MDB para que essa mensagem seja o menor possível.

Para fornecer um tempo de resposta rápido para um pico de energia no trabalho, você opta por uma lista não processada maior. Você configura o valor Número máximo de sessões da Porta Listener com 100 = 2 * (3 * 6 + 32).

Nota: Todo valor maior ou igual a 36 = 2 * 3 * 6 manteria todos os encadeamentos de trabalhadores disponíveis do servant ocupados. Na prática, não é crítico escolher o melhor "fator de lista não processada" possível, basta fazer uma boa estimativa e depois arredondar para um valor apropriado conveniente. Por exemplo, neste caso, você pode escolher um valor de 100.

Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cprf_tunezmdb_throttle
Nome do arquivo: cprf_tunezmdb_throttle.html