Considerações do Sistema para o Desenvolvimento do Fluxo de Mensagens

Tamanho Padrão da Pilha

Ao executar um encadeamento de fluxo de mensagens, ele exige armazenamento para executar as instruções que estão definidas na lógica de seus nós conectados. Esse armazenamento vem do tamanho de heap e de pilha do grupo de execução. O tamanho padrão da pilha alocado para um encadeamento de fluxos de mensagens depende da plataforma utilizada.

Cada encadeamento de fluxos de mensagens é alocado em 1 MB de espaço da pilha.

Para cada encadeamento do fluxo de mensagens são alocados 8 MB de espaço da pilha.

Cada encadeamento de fluxos de mensagens é alocado em 1 MB de espaço da pilha.

Cada encadeamento de fluxos de mensagens é alocado em 512 KB de espaço da pilha descendente e 50 KB de espaço da pilha ascendente.

Em um fluxo de mensagens, um nó geralmente utiliza aproximadamente 2 KB do espaço da pilha. Um fluxo de mensagens típico pode, portanto, incluir aproximadamente 250 nós no z/OS, 500 nós nas plataformas UNIX e 500 nós no Windows. Esse valor pode ser maior ou menor, dependendo do tipo de nós utilizado e do processamento executado.

Aumentando o tamanho da Pilha nas Plataformas Windows e UNIX

É possível aumentar o tamanho de pilha configurando a variável de ambiente MQSI_THREAD_STACK_SIZE para um valor apropriado. Ao reiniciar intermediários em execução no sistema, eles utilizarão o novo valor.

O valor de MQSI_THREAD_STACK_SIZE definido é utilizado para todos os encadeamentos criados em um processo DataFlowEngine. Se o grupo de execução tiver muitos fluxos de mensagens designados a ele e um MQSI_THREAD_STACK_SIZE de valor grande for definido, isso pode fazer com que o processo DataFlowEngine exija uma grande quantidade de armazenamento para a pilha.

Aumentando o Tamanho da Pilha no z/OS

Os componentes do integrador no z/OS são compilados utilizando o novo XPLINKage (vínculo de desempenho extra), que inclui a otimização para o código de tempo de execução. No entanto, se o tamanho de pilha inicial não for grande suficiente, então, as extensões de pilha serão utilizadas. 128 KB é utilizado em cada extensão. É muito importante que um tamanho de pilha decrescente grande suficiente seja escolhido, pois XPLINK não é executado adequadamente ao utilizar extensões de pilha.

Para determinar tamanhos de pilha adequados, um administrador de componente para o z/OS pode utilizar a ferramenta LE (Language Environment) Report Storage. Para fazer isso, um fluxo de mensagens deve ser testado utilizando a opção RPTSTG com a variável de ambiente _CEE_RUNOPTS. Ela deve ser configurada no perfil do componente (BIPBPROF para um intermediário) durante o desenvolvimento e teste dos fluxos de mensagens direcionados para produção. Por exemplo:
export _CEE_RUNOPTS=XPLINK\(ON\),RPTSTG(ON)
É possível, então, substituir os valores padrão dos tamanhos de pilha no z/OS alterando ou incluindo a variável de ambiente LE_CEE_RUNOPTS no perfil do componente.

Ao atualizar o perfil do componente, você deve parar o componente, fazer as alterações necessárias no perfil, enviar BIPGEN para recriar ENVFILE e reiniciar o componente.

Por exemplo, é possível alterar os valores padrão de 50 K e 512 K na seguinte linha para corresponder às suas necessidades:
export _CEE_RUNOPTS=XPLINK(ON),THREADSTACK(ON,50K,15K,ANYWHERE,KEEP,512K,128K)

Utilizar o RPTSTG aumenta o tempo que o aplicativo leva para a execução. Você deve, portanto, utilizá-lo como um auxílio apenas para desenvolvimento de fluxos de mensagens e do ambiente de produção final. Após determinar os tamanhos corretos de pilha necessários, você deve remover essa opção da variável de ambiente _CEE_RUNOPTS.

Nota: As pilhas XPLINK crescem de forma decrescente no armazenamento virtual, enquanto o vínculo padrão antigo cresce de forma crescente. Para evitar um impacto de desempenho causado pela alternância entre o espaço da pilha decrescente e o espaço da pilha crescente durante o tempo de execução, você deve compilar as extensões definidas pelo usuário utilizando a opção XPLINK, se possível. Se o fluxo de mensagens utiliza extensões definidas pelo usuário, compiladas com a convenção de vínculo padrão, será necessário determinar e definir um valor adequado para o tamanho de pilha crescente.

Determinando o Tamanho de Pilha Correto

No WebSphere Message Broker, todos os processos que envolvem processos aninhados ou recursivos podem causar o uso extensivo da pilha. Por exemplo, nas situações a seguir, é possível que seja necessário aumentar o tamanho da pilha:
  • Quando um fluxo de mensagens está processando uma mensagem que contém um grande número de repetições ou aninhamento complexo.
  • Quando um fluxo de mensagens está executando o ESQL que chama recursivamente o mesmo procedimento ou função ou quando um operador, por exemplo, o operador de concatenação, é utilizado repetidamente em uma instrução ESQL.
Tarefas relacionadas
Otimizando Tempos de Resposta do Fluxo de Mensagens
Referências relacionadas
Fluxos de mensagem
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac00340_