Paralelismo e licenciamento no Magic xpi e Magic xpa Server

O Magic xpi (iBOLT) e o Magic xpa (uniPaaS) Enterprise Server (Magic xpa ativado em modo background) utilizam um sistema de ativação chamado ‘filas de processamento(ou threads).

São os contextos criados automaticamente pelo servidor (iBoltServer.exe ou UniRTE.exe) para responder a uma requisição de processamento. Uma vez que a requisição termina (é respondida), o contexto que foi criado para processá-la é liberado (destruído).

Qual a relação entre Contextos (Filas) e Licença?

A quantidade de contextos paralelos (simultâneos) que o servidor está autorizado a criar é definida pela licença em uso no momento. Se a licença (por exemplo) definir 4 filas, então até 4 contextos poderão existir ao mesmo tempo.

 

E quando todos os contextos possíveis já foram criados?

Quando uma nova requisição de processamento ocorre, e todos os contextos possíveis (cfe. a licença) já estão criados, então esta nova solicitação fica “em espera”, até que um dos contextos existentes finalize e um novo possa ser criado para ela. Este é o conceito chamado “fila”.

 

Quanto tempo uma fila fica ocupada?

Enquanto o contexto existir. Por exemplo, no Magic xpi, enquanto o fluxo de integração estiver executando. No Magic xpa Enterprise Server, enquanto o programa público chamado não terminar sua execução.

 

Quando acontece uma nova requisição de processamento?

No caso do Magic xpi:

Sempre que um fluxo de integração for iniciado por algum dos motivos abaixo:

  • Propriedade AutoStart=YES
  • Publish
  • Scheduler
  • Triggers (Email, WebSvc, Scheduler, DirScan, HTTP, COM, EJB, B1, etc…)

Enquanto o fluxo iniciado estiver executando, haverá um contexto para ele.

Também quando algum componente do fluxo for definido como “Paralelo” ou “StandAlone”, ele executará em um contexto separado (novo).

No caso do Magic xpa Enterprise Server:

Sempre que uma chamada externa a um programa público Magic xpa for realizada. Os agentes que estão habilitados a realizar estas chamadas são:

  • Requisições HTTP (mgrqcgi.exe e mgrqispi.dll). Incluem-se aqui os clientes SOAP, EJB e COM.
  • Requisições por Linha de Comando (mgrqcmdl.exe)
  • Call-Remote (instrução Magic xpa para chamar programas remotamente em um outro Magic xpa Server)

 

Quantas filas meus projetos necessitam?

Dependerá de quantos “paralelismos” (requisições de processamento simultâneas) ocorrerem, e qual o tempo tolerado para finalização de cada uma delas. Por exemplo, um cenário de um fluxo Magic xpi ativado por uma trigger WebService. Uma vez iniciado, este fluxo demora 3,5seg para concluir (apenas exemplo). Com licença de 1 fila, o Magic xpi Server poderá atender +/- 1000 requisições por hora (carga total). Se o pico for de 1500 em uma hora, em média (cálculo aproximado) cada uma poderá demorar até 5,25seg para ser respondida durante o pico. Se este tempo está dentro dos limites tolerados do processo, então 1 fila atenderá a demanda para este webService. Se o processo exigir que o tempo de resposta seja inferior, então novas filas serão necessárias.

Manoel Frederico - Gerente de Produto e Magic Evangelista
Manoel Frederico – Gerente de Produto e Magic Evangelista

 

2 comentários

  1. Tarcísio,

    o post destaca os ambientes “server” do UniPaaS e iBolt, onde a quantidade de filas da licença pode ter impacto direto na performance final da solução.

    Em ambientes RIA (UniPaaS), o sistema é outro. A licença (MGRIA) é disponibilizada por nro. de usuários concorrentes, similar ao Desktop/OpenClient. Um usuário RIA ocupa uma licença enquanto ele possuir uma sessão (contexto) com o UniPaaS Server.

  2. Caro Manoel,

    Inicialmente, parabens pelo seu artigo.

    Creio ter compreendido muito bem a questão das filas x licenças, porém, a seguinte frase de seu artigo deixou-me confuso.

    “Quanto tempo uma fila fica ocupada?

    […] No UniPaaS Enterprise Server, enquanto o programa público chamado não terminar sua execução.”

    A afirmativa acima, relativamente à desocupação da fila ocorrer tão somente quando o programa público chamado nao encerrar sua execução, levou-me à seguinte suposição:

    Imaginemos 4 filas. Quatro usuários acessaram o mesmo programa público, Rich CLient, de entrada de dados, por exemplo. Como se trata de um programa que consome recursos mediante a ação dos próprios usuários, pergunto se as quatro filas estarão presas, mesmo que um ou todos os usuários da quatro filas estejam sem fazer absolutamente nada, apenas com os cursores piscandoi na tela, aguardando ações dos usuários ?

    Se assim for, então este licenciamento segue a mesma filosofia das licenças open client das versões Magic 8 e 9, a qual ocupa sempre uma licença mesmo que o programa esteja ocioso ?

    Caso contrário, segue a mesma filosofia das licenças Internet (MGENT) do Magic 9.4, a qual somente ocupa uma fila quando existem requesters a executar, mas a fila é liberada assim que o request é finalizado ? (filosofia de filas mesmo)

    Embora pareça um excesso de cuidado de minha parte, de fato a frase “quando o programa público chamado nao encerrar sua execução” me deixou de fato confuso. Talvez eu devesse entender a frase como sendo “quando o programa público chamado encerrar o ultimo REQUEST solicitado” ?

    Muito grato pela atenção e fico no aguardo da resposta.

    Tarcisio Alves Vianna

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *