Configuração de Balance no Protheus

Aviso: os números nesse post são baseados na minha experiência durante os anos de trabalho com consultoria. No entanto, não sou especialista em infra e por isso não leve como uma regra.

Normalmente quando mais de 20 usuários utilizam o sistema já é desejável dividir o serviço do Protheus em 2 ou mais aplicações para que todas operem longe do limite de memória (algo em torno de 1 GB). Quando uma aplicação Protheus ultrapassa esse limite de uso de memória física, não é raro experimentar lentidão no uso do Smartclient e até mesmo travamentos no Appserver.

A configuração do balance, então, se faz necessária. O que é balance? O próprio nome explica, balanço. É uma aplicação comumente chamada de Master, que faz uma divisão dos usuários logados para cada servidor de aplicação (Slaves) existente. Quando o usuário abre seu Smartclient e requisita uma conexão com o Master, este verifica os usuários logados em cada Slave e direciona o usuário para o Slave mais disponível entre todos de acordo com a porcentagem configurada para proporção de cada Slave.

Para saber em qual aplicação se encontra cada usuário, utilize a coluna “Servidor” no Monitor para identificar o endereço e porta do Slave:

monitor

Uma vez entendido o conceito podemos então concluir que é necessário a configuração de um Appserver Master e 2 ou mais Appservers Slaves. Não é nada complexo e compreende apenas numa configuração do arquivo INI de cada servidor.


1) Comece replicando a pasta “appserver” dentro de “bin” criando por exemplo 5 cópias da pasta: appserver_master, appserver_slave1, appserver_slave2, appserver_slave3 e appserver_slave4.

2) Vamos configurar 1 master com 4 slaves proporcionando 25% das conexões para cada um deles.

2.1) Appserver.ini – Master:

Configure neste appserver a porta TCP que deseja que os smartclients se conectem, por exemplo 5010. Depois adicione as seguintes configurações no fim do arquivo (modifique o endereço IP deste exemplo):

[ServerNetwork]
MasterConnection=0
Servers=SLAVE1, SLAVE2, SLAVE3, SLAVE4

[SLAVE1]
Type=TCPIP
Server=192.168.1.1
Port=5011
Connections=25

[SLAVE2]
Type=TCPIP
Server=192.168.1.1
Port=5012
Connections=25

[SLAVE3]
Type=TCPIP
Server=192.168.1.1
Port=5013
Connections=25

[SLAVE4]
Type=TCPIP
Server=192.168.1.1
Port=5014
Connections=25

2.2) Appserver.ini – Slaves:

Configure cada slave em sua respectiva porta TCP de acordo com o configurado em SLAVE1, SLAVE2, SLAVE3 e SLAVE4 no INI do Master.

2.3) Configuração como serviço:

Lembre-se de adicionar a configuração de nome do serviço diferente em todos os appservers configurados para que seja possível distinguí-los na lista de serviços do servidor.

servicos

Exemplo da configuração:

[Service]
Name=TOTVS11_MASTER
DisplayName=TOTVS 11 – Master

[Service]
Name=TOTVS11_SLAVE1
DisplayName=TOTVS 11 – Slave 1

[Service]
Name=TOTVS11_SLAVE2
DisplayName=TOTVS 11 – Slave 2

[Service]
Name=TOTVS11_SLAVE3
DisplayName=TOTVS 11 – Slave 3

[Service]
Name=TOTVS11_SLAVE4
DisplayName=TOTVS 11 – Slave 4

3) Smartclients

Todos os Smarclients devem apontar sempre para o endereço e porta da aplicação master.


Bastando essas configurações para colocar em funcionamento o Balance. Se o seu Protheus está trabalhando com 40 ou mais usuários, todos sentirão uma boa melhora na performance.

Esta configuração de exemplo funciona bem com até 120 usuários simultâneos. Eu utilizo como referência a base de 30 usuários por aplicação slave. Evidentemente isso depende do uso, características do sistema, rotinas utilizadas e hardware disponível para o sistema. E como disse no aviso ao início desse post: não sou perito em infra, portanto esses números são conclusões pessoais minhas no decorrer da minha experiência dentro das empresas.

Anúncios

4 thoughts on “Configuração de Balance no Protheus

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s