Múltiplos Servers no Magic xpi 4 (agora com GigaSpace)

Desde a chegada do Magic xpi versão 4, agora integrado ao GigaSpace (XAP 9.1.2) – uma plataforma ‘cloud ready’ para aplicações (In-Memory DataGrid, Big Data, Clusters, etc…) – algumas novidades relativas a recursos para processamento passaram a exigir nossa atenção.

( veja este post sobre o Magic xpi 4 )

Uma das novidades é a possibilidade de múltiplos Servers para a execução do mesmo projeto Magic xpi.

Estes vídeos abaixo mostram a facilidade de se adicionar ( ou remover ) servidores para um mesmo projeto em execução.



Mas porque ter mais de um ‘Server’ para um projeto?

A resposta simples e curta é: aumentar a capacidade ( performance ) de execução.

Mas calma: leia o restante antes de sair habilitando dezenas de servidores para executar um mesmo projeto :-).

A configuração padrão de um servidor (MgXpiServer.exe) para executar um projeto, é o normal. E o ‘normal’ vai nos atender na maioria das vezes.

Mas existem as exceções.

Vamos imaginar o seguinte cenário hipotético:

Um projeto que recebe requisições externas (HTTP ou SOAP) e dispara fluxos de processamento. Por questões de regras de negócio, cada fluxo precisa alocar 500MB de dados em variáveis (provavelmente seriam BLOBs), para completar as suas tarefas (este exemplo usa processos pesados propositadamente 🙂). Colocamos o projeto para executar, com uma fila de licença, num servidor com 4GB de RAM e 2 processadores. E através de monitoramento de desempenho, identificamos que a performance está abaixo do desejado.

Primeira ação: verificar se o desenho dos fluxos estão adequados.

Reavaliamos os desenhos, e concluímos que está como deve ser para atender as regras de negócio.

Mas o problema persiste.

Segunda ação: aumentar a capacidade de concorrência.

A natureza deste projeto exemplo é prover serviços (HTTP ou SOAP) que poderão ser consumidos por ‘n’ clientes ao mesmo tempo. Logo, se verificarmos que o total de requisições enfileiradas (e/ou recusadas por time-out) está alto, isso é um indicativo que precisamos redimensionar as filas para atender a demanda real do negócio. Então, passamos para 4 filas. Agora, podemos atender a 4 requisições externas ao mesmo tempo.

O resultado melhorou, mas o problema persiste. Ainda precisa melhorar mais a performance do projeto.

Terceira ação: aumentar a capacidade do hardware.

Obviamente existe uma relação direta entre a capacidade de processamento do hardware, e a performance geral do projeto Magic xpi que está executando nele. Então, passamos para um servidor com 16GB de RAM e 8 processadores.

O resultado melhorou, mas o problema persiste. Ainda precisa melhorar mais a performance do projeto.

Quais outras opções ainda teríamos?

Aqui ocorre uma situação importante a se observar: o Magic xpi é um software 32bits. Mesmo que o hardware tenha 16GB de RAM, e ela possa ser aproveitada entre vários sistemas executando nele, o  Magic xpi em si não vai poder aproveitar mais do que 2GB de memória (por questões técnicas da arquitetura x86).

Lembrando que neste nosso cenário de exemplo temos até 4 fluxos simultâneos, sendo que cada um pode precisar de 500MB de memória, o que seriam 2GB de memória alocados num único processo do sistema operacional (MgXpiServer.exe).

Este é um bom caso para ter mais de um Server para o mesmo projeto. Existe hardware para aproveitar!

Poderíamos configurar o Magic xpi versão 4 para iniciar 4 instâncias (servers) e 1 worker (que significa 1 worker em cada instância).

Neste caso, 4 chamadas simultâneas (cfe. o limite da licença) seriam atendidas em 4 processos (MgXpiServer.exe) diferentes ao mesmo tempo, cada um alocando 500MB de memória (ao invés de um único processo alocando 2GB de memória).

Isso aproveitaria de forma muito mais eficiente o hardware disponível :-).

E como você viu no segundo vídeo, aumentar ou diminuir Servers para o projeto pode ser feito pelo próprio Magic xpi Monitor, dinamicamente:

Imagem_002

 

Não estamos dizendo que esta opção só deva ser adotada após esgotar as anteriores, como o aumento de filas para o projeto, por exemplo.

Ela poderia ser tentada antes. Mas aumentar Servers não é a solução para todas as questões relacionadas a performance dos projetos.

Estamos dizendo que o importante é analisar a situação, para determinar qual as soluções a serem adotadas. E aumentar as instâncias de Servers nos projetos é mais uma opção existente no Magic xpi versão 4, que poderá nos ajudar em vários cenários.

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

 

Deixe um comentário

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