Descubra nessa postagem como melhorar o desempenho do Protheus realizando o balanceamento de carga do DBAccess.
Várias empresas utilizam o balanceamento de carga nos serviços (AppServer) para que consigam ter uma melhor administração e estabilidade no ERP, fazendo assim a distribuição dos acessos ao Protheus em diversos serviços que podem estar configurados em servidores na rede ou tudo em apenas um servidor.
Você sabia que é possível realizar a distribuição das conexões através do balanceamento de carga do DBAccess? logo abaixo explicamos como fazer a configuração correta do balanceamento e como desfrutar dessa funcionalidade que pode ajudar em muito no desempenho do seu ERP.
Poucos sabem da possibilidade de realizar o balanceamento do DBAccess (topconnect para os mais antigos) ou como configura-lo da melhor maneira.
Estudo de caso: Sabendo que nesse mundo tecnológico nem tudo sai conforme o combinado, me deparei com um ambiente em que o DBAccess estava recebendo mais de 1.000 acessos simultâneos e não estava dando conta de responder a todos de forma satisfatória, ocasionando bloqueios de acesso e queda de performance.
E agora José? Vamos ver abaixo mais detalhes sobre o balanceamento de carga no DBAccess e como configurá-lo:
Um detalhe importante é que o DBAccess que recebe a função de MASTER não é responsável por fazer a distribuição da carga ou das conexões como acontece no balanceamento do appserver. Deste modo, cada serviço do AppServer deve ser explicitamente configurado para se conectar a um DBAccess SLAVE e esse por sua vez é configurado para se conectar ao DBAccess MASTER que vai realizar os controles de LOCK (bloqueios para evitar acesso simultâneo aos registros em alteração) e de licenças de uso do ERP.
Mão na Massa
Usando como exemplo um ambiente com 3 servidores, nomeados SRVDB, SRVAPP1 e SRVAPP2, onde o servidor de banco de dados possui o DBAccess MASTER e os servidores SRVAPP1 e SRVAPP2 possuem cada um 2 serviços do AppServer configurados para se conectar ao DBAccess SLAVE em seus próprios servidores.
A imagem abaixo ilustra o cenário estudado

Vamos seguindo passo a passo:
- Instale um DBAccess em cada servidor que contém o AppServer (SRVAPP1 e SRVAPP2)
- Configure o ODBC nos servidores SRVAPP1 e SRVAPP2 para conectar no banco de dados do SRVDB
- Configure cada DBAccess nos servidores SRVAPP1 e SRVAPP2 para o modo de acesso SLAVE
dbAccess.ini
[General]
Mode=SLAVE
MasterServer=SRVDB
MasterPort=7890 ;;Informa a porta do DBAccess configurada no SRVDB
Feito isso em todos os servidores de aplicação, agora devemos configurar o DBAccess MASTER que ficará no SRVDB:
dbAccess.ini
[General]
Mode=MASTER
Fique atento
O License Server deve ser configurado apenas no DBAccess MASTER
Vamos testar?
- Inicie o DBAccess no servidor SRVDB
- Inicie o DBAccess nos servidores de aplicação (SRVAPP1 e SRVAPP2)
- Teste as conexões de cada um dos DBAccess usando o DBMonitor
- Altere os arquivos de configuração (appserver.ini) dos servidores SRVAPP1 e SRVAPP2 para se conectar ao DBAccess SLAVE do próprio servidor
Exemplo da configuração no appserver.ini do “AppServer Slave01” do nosso cenário:
[DBAccess]
DataBase=MSSQL
Server=SRVAPP1
Port=7890
Alias=P12
Características do DBAccess com balanceamento de carga
Um DBAccess SLAVE somente consegue estabelecer conexão com o banco de dados se conseguir conectar primeiro com o DBAccess MASTER.
O DBMonitor somente tem acesso às informações e conexões processadas naquele serviço. Logo, para localizar uma conexão no ambiente mencionado deve-se abrir um DBMonitor para cada DBAccess SLAVE.
O DBAccess com balanceamento e controle de licenças centralizado no MASTER depende da build com release igual ou superior a 20170202.
Referências

Desenvolvedor e entusiasta de inovações e tecnologia.