Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

O

Inclusão de trecho
broker
broker
nopaneltrue
 suporta suporta os métodos descritos abaixo para balancear as conexões oriundas de um Inclusão de trechoSmartClientSmartClientnopaneltrue:TOTVS | SmartClient.

SORT_METHODDescrição
CONNECTIONBalanceamento por número de conexões
ROUND_ROBINBalanceamento Round Robin sequencial (RRround robin)
SERVER_MEMORY

Balanceamento por consumo de memória reportado pelo 

Inclusão de trecho
application server
application server
nopaneltrue

SERVER_USERS

Balanceamento por número de usuários reportados pelo 

Inclusão de trecho
application server
application server
nopaneltrue

SERVER_THREADS

Balanceamento por número de threads reportado pelo 

Inclusão de trecho
application server
application server
nopaneltrue

SERVER_CPU

Balanceamento por consumo de CPU reportado pelo 

Inclusão de trecho
application server
application server
nopaneltrue

Obs.: o método SERVER_MEMORY  é o padrão e não precisa ser especificado.

A especificação do método de balanceamento é feita pelo uso da chave SORT_METHOD na seção BALANCE_SMART_CLIENT_DESKTOP no arquivo de configuração do

Inclusão de trecho
broker
broker
nopaneltrue
(appserver.ini).

Os métodos SERVER_MEMORY, SERVER_USERS, SERVER_THREADS e SERVER_CPU são efetivos apenas quando usados em conjunto com a opção de monitoramento ativo (SMARTCLIENT_ACTIVE ou SMARTCLIENT_SSL_ACTIVE).

ExemploEste exemplo utiliza o método de : balanceamento pelo consumo de memória nos servidores.


Sem Formato
[BALANCE_SMART_CLIENT_DESKTOP]
...
...
SORT_METHOD=SERVER_MEMORY
...
...

Detalhes dos métodos de balanceamento


Método de balanceamento por conexões

Este método utiliza como métrica o número de conexões de Smartclient para cada servidor que consta na tabela de servidores do Broker

Inclusão de trecho
broker
broker
nopaneltrue
.

São consideradas apenas as conexões que passam pelo Broker. Isto é, se um usuário se conectar sem utilizar o Broker, está

Inclusão de trecho
broker
broker
nopaneltrue
, esta conexão não será levada em consideração pelo algoritmo de balanceamento.

Supondo inicialmente que nenhum usuário está logadoesteja conectado.

Agora, A imagem abaixo mostra as conexões após um usuário se logar entrar no sistema. Como o balanceamento está sendo feito pelo número de conexões, então o servidor que tiver o menor número de conexões será o escolhido. Como os 3 servidores possuem o mesmo número de conexões (zero), qualquer um deles poderá ser escolhido.

O servidor 1 foi o escolhido, porque era um dos que possuía menor quantidade de conexões.

O próximo usuário a se logar conectar irá ou para o servidor 2 ou para o servidor 3.

Foi escolhido o servidor 2.

Agora, o próximo usuário a se conectar será obrigatoriamente direcionado ao servidor 3.

Confirmado, o terceiro usuário foi direcionado para o servidor 3.

Agora, para efeito de teste, o segundo usuário (servidor 2) fecha sua sessão com o sistema.

Certo, o servidor 2 agora aparece com zero conexões.

Portanto, o próximo usuário que se conectar irá ser direcionado ao servidor 2, que é o servidor com o menor número de conexões.

Certo, o novo usuário foi direcionado ao servidor 2.

Agora, um detalhe: a cada aba que acessa uma rotina específica de um módulo, uma nova conexão com o servidor será aberta. Assim, a tela inicial do módulo (p.ex. SIGAADV, SIGAMDI) conta com uma conexão, e qualquer rotina escolhida que crie uma nova aba MDI criará uma nova conexão com um servidor.

Na tela abaixo, o usuário se conectou no servidor 2 no módulo SIGAADV, e abriu uma rotina de "Consulta Genérica de Cadastro". Portanto, aparecem 2 conexões para o servidor 2 na tela do broker.


Método de balanceamento

por

sequencial (round robin)

Este método redireciona cada nova conexão de Smartclient para cada um servidor que consta na tabela de servidores do Broker

Inclusão de trecho
broker
broker
nopaneltrue
em ordem sequencial.

São consideradas apenas as conexões que passam pelo Broker

Inclusão de trecho
broker
broker
nopaneltrue
. Isto é, se um usuário se conectar sem utilizar o Broker, está
Inclusão de trecho
broker
broker
nopaneltrue
, esta nova conexão não será levada em consideração pelo algoritmo de balanceamento.

Supondo uma configuração com 3 servidores, e inicialmente nenhum usuário logado.A conectado, a primeira conexão irá para o servidor 1, a segunda para para o servidor 2, a terceira para o servidor 3, a quarta volta para o servidor 1, a quinta para o servidor 2, e assim por diante


Tela inicial, com nenhuma usuário conectadosem usuários conectados.

Image RemovedImage Added


Tela do Broker

Inclusão de trecho
broker
broker
nopaneltrue
com o primeiro usuário conectado, ainda  na tela de menu do Smartclient, após conexão no módulo SIGMDI.

Image RemovedImage Added


Tela do Broker

Inclusão de trecho
broker
broker
nopaneltrue
após o usuário executar uma Consulta Genérica de Cadastro. A nova aba MDI abera consumiu uma nova conexão. Como o balanceamento é round robin, esta nova conexão foi para o servidor 2, que era o próximo na sequência na tabela de servidores do Broker
Inclusão de trecho
broker
broker
nopaneltrue
.

Image RemovedImage Added


O próximo servidor na sequência é o servidor 3. Então uma nova aba MDI aberta, ou um novo Smartclient iniciado vai abrir uma conexão com o servidor 3.

Tela do Broker

Inclusão de trecho
broker
broker
nopaneltrue
após a abertura de um novo Smartclient. Usando o servidor 3, como previsto.

Image RemovedImage Added


Para efeito de teste, este último Smartclient aberto, que utiliza o servidor 3, será fechado.

Tela após o fechamento deste Smartclient.

Image RemovedImage Added


O servidor 3 agora está com zero conexões. Mesmo assim o próximo Smartclient a ser iniciado irá se conectar ao servidor 1, que é o próximo na sequência.

Image RemovedImage Added

Como esperado, o novo Smartclient se conectou ao servidor 1, apesar do servidor 3 não estar sendo usado por nenhum Smartclient (está com zero conexões).


O próximo Smartclient a se conertar conectar ainda não vai se conectar ao servidor 3, e sim ao servidor 2, que é o próximo na sequência.

Image RemovedImage Added

Como esperado, o novo Smartclient se conectou ao servidor 2.


Agora, o próximo Smartclient a se conectar irá usar o servidor 3, que é o próximo na sequência

Image RemovedImage Added

Confirmado, novo Smartclient se conectou no servidor 3.


Método de balanceamento por consumo de memória por servidor

Este método direciona cada nova conexão de Smartclient para o servidor com menor consumo de memória, como informado pelo monitoramento ativo dos servidores.

Mesmo as conexões que não passam pelo

Inclusão de trecho
broker
broker
nopaneltrue
afetam este método de balanceamento, pois a métrica utilizada não depende do
Inclusão de trecho
broker
broker
nopaneltrue
, mas sim do consumo de memória de cada servidor.


Tela inicial sem nenhum usuário passando pelo

Inclusão de trecho
broker
broker
nopaneltrue
.

Image Added

O consumo de memória pelos servidores é bastante parecido, mas o servidor 2 tem o menor consumo: 33.966.

Então a primeira conexão de Smartclient a ser feita vai utilizar o servidor 2.


Tela do Broker após o primeiro usuário se conectar.

Image Added

Como esperado, esse primeiro usuário se conectou no servidor 2.


O segundo usuário vai se conectar no servidor 3, que agora apresenta o menor consumo de memória entre os 3 servidores configurados.

Image Added

Tela do Broker após a conexão do segundo usuário.


Correto, o segundo usuário se conectou no servidor 3.

O próximo usuário agora com certeza vai se conectar no servidor 1, que está usando muito menos memória que os outros 2 servidores.

Image Added

Tela do Broker após a conexão do terceiro usuário.


Certo, o terceiro usuário se conectou no servidor 1.

Como o servidor 1 ainda é o servidor com menor consumo de memória, o próximo usuário a se conectar ainda vai utilizar o servidor 1.

Image Added

Correto, o quarto usuário se conectou com o o servidor 1, que tinha o menor consumo de memória entre os 3 servidores configurados.


Método de balanceamento por quantidade de usuários no servidor

Este método direciona cada nova conexão de Smartclient para o servidor com menor quantidade de usuários conectados como informado pelo monitoramento ativo dos servidores.

Mesmo as conexões que não passam pelo

Inclusão de trecho
broker
broker
nopaneltrue
afetam este método de balanceamento, pois o número de usuários conectados não depende do
Inclusão de trecho
broker
broker
nopaneltrue
, visto que podem existir usuários conectados diretamente no servidor, sem passar pelo
Inclusão de trecho
broker
broker
nopaneltrue
.

É importante notar que um mesmo usuário pode participar de várias conexões com os servidores. Por exemplo, um usuário se conecta via módulo SIGAMDI, e depois abre 2 abas para outras módulos. Se as 3 conexões (tala inicial MDI + outros 2 módulos) caírem no mesmo servidor, vai ser contado apenas um usuário neste servidor, embora existam 3 conexões deste usuário. Com o

Inclusão de trecho
broker
broker
nopaneltrue
, no entanto, a tendência é que as 2 abas MDI se conectem a outros 2 servidores diferentes, então este usuário iria aparecer nos 3 servidores onde ele está conectado (considerada a tela de menu inicial e as 2 outras abas MDI abertas).

Image Added

Image Added

Nas telas acima, um usuário se conectou via SIGAMDI com o servidor 1 (pelo

Inclusão de trecho
broker
broker
nopaneltrue
), e abriu 2 abas MDI, uma com o servidor 2 e outra com o servidor 3.

A tela do broker no entanto mostra 2 usuários para o servidores 2 e o servidor 3.

Qual a explicação ? Podemos ver os detalhes pelo WebMonitor:

Image Added

Cada aba MDI utiliza na verdade 2 usuários: o usuário real (jose.santana) e um usuário criado pelo ERP, que é o mesmo que o usuário real, adicionado de um "_" (underline) no final: jose.santana_.

Estes detalhes da criação e gerenciamento de usuários são responsabilidade do ERP, não estão sob controle nem do

Inclusão de trecho
broker
broker
nopaneltrue
nem do
Inclusão de trecho
tecen:Application Server
tecen:Application Server
nopaneltrue
.


Uma outra consideração a ser levada em conta: quando a chave APP_ENVIRONMENT está habilitada em um servidor, então este servidor, ao iniciar, vai ter automaticamente um usuário LSPULSE ativo, correspondente ao job REST que tratam as rotinas do ERP que utilizam a interface PO-UI. Isso pode ser visto pela tela do WebMonitor:

Image Added


Agora, quanto aos detalhes do balanceamento por quantidade de usuários em cada

Inclusão de trecho
tecen:Application Server
tecen:Application Server
nopaneltrue
: é um método simples, a próxima conexão de Smartclient vai ser direcionada para o servidor com menor número de usuários, conforme informado ao
Inclusão de trecho
broker
broker
nopaneltrue
pelo monitoramento ativo dos servidores.

Inicialmente, 3 servidores sem usuários.

Image Added


Agora, após um usuário ter se conectado, mas ainda na tela do menu principal.

Image Added


Agora, após um outro usuário ter se conectando, também ainda na tela do menu principal.

Image Added


Agora, após o primeiro usuário abrir uma aba MDI.

Image Added

A conexão foi feita com o servidor 3, que possuía zero usuários ativos. Agora, o servidor 3 possui 2 usuários ativos: o usuário original, que se conectou pelo Smartclient, e o usuário com um "_" (underline) no final, que foi criado pelo ERP.

A tela do WebMonitor mostra os detalhes desses usuários.

Image Added


Agora, a tela do

Inclusão de trecho
broker
broker
nopaneltrue
após um outro usuário se conectar, mas ficar na tela do menu principal do Smartclient.

A conexão vai ser feita ou com o servidor 1, ou com o servidor 2, que possuem apenas 1 usuário, portanto são elegíveis para balanceamento.

O servidor 3 não é elegível para balanceamento, pois não possui o menor número de usuários entre os servidores configurados no

Inclusão de trecho
broker
broker
nopaneltrue
.

Image Added

Correto. Como esperado, a conexão foi direcionada para um dos servidores com menor número de usuários.

Método de balanceamento por quantidade de threads no servidor

Este método direciona cada nova conexão de Smartclient para o servidor com menor quantidade de threads em execução, como informado pelo monitoramento ativo dos servidores.

Mas o que é uma thread ? No contexto do

Inclusão de trecho
application server
application server
nopaneltrue
uma thread pode se referir a 3 coisas:

  1.  uma rotina sendo executada pelo usuário em um Smartclient
  2. um job sendo executado no servidor
    o job pode ter sido criado por um pograma ADVPL do usuário, ou pelas rotinas internas do ERP
    normalmente um job é identificado no WebMonitor pelo nome do usuário terminando com um "_" (underline)
  3. threads internas criadas pelo próprio
    Inclusão de trecho
    application server
    application server
    nopaneltrue

    estas threads não são visíveis no WebMonitor, mas aparecem na tela de status do
    Inclusão de trecho
    broker
    broker
    nopaneltrue
    , e são visíveis quando o servidor ainda não recebeu nenhuma conexão


Tela do

Inclusão de trecho
broker
broker
nopaneltrue
mostrando os servidores sem nenhuma conexão, sem nenhum usuário, mas com as threads internas do
Inclusão de trecho
application server
application server
nopaneltrue
.

Image Added


Agora, a tela do

Inclusão de trecho
broker
broker
nopaneltrue
após um usuário se conectar.

Image Added

É possível ver que a quantidade de threads do servidor 1 aumentou de 18 para 20.

Portanto, a próxima conexão de Smartclient (ou aba MDI) vai se conectar ou no servidor ou no servidor 3, que possuem menos threads ativas que o servidor 1.


Tela do

Inclusão de trecho
broker
broker
nopaneltrue
após a abertura de uma aba MDI pelo Smartclient conectado no servidor 1..

Image Added

A aba MDI se conectou no servidor 2, que era um dos servidores que possuía o menor número de threads ativas.

É possível ver também que a aba MDI criou mais 4 threads no servidor 2.

Assim, a próxima conexão de Smartclient (ou aba MDI) abrirá uma conexão com o servidor 3, que possui o menor número de threads ativas entre os 3 servidores (18 threads).


Tela do Broker após a conexão de um outro Smartclient, ainda na tela do menu inicial.

Image Added

Como previsto, este novo Smartclient se conectou no servidor 3.


Agora, a tela do

Inclusão de trecho
broker
broker
nopaneltrue
após desconectar o Smartclient conectado no servidor 1. Este Smartclient também tinha um usuário e algumas threads no servidor 2, por causa da thread MDI que foi aberta.

Nota-se que o servidor 2 continua com uma thread adicional em relação ao que havia no início: antes eram 18 threads, agora são 19 threads.

Esta thread restante provavelmente é um resquício da aba MDI que foi aberta anteriormente.

Image Added


Após algum tempo, a thread adicional desapareceu, e o servidor 2 voltou a ficar com 18 threads, como estava no início.

Image Added

O próximo Smartclient que se conectar será ou no servidor 1 ou no servidor 2.


Agora, a tela do

Inclusão de trecho
broker
broker
nopaneltrue
após a conexão de um outro Smartclient, ainda na tela do menu principal.

Image Added

Correto. Como esperado, o novo Smartclient se conectou com um dos servidores que possuía o menor número de threads ativas.

Método de balanceamento pelo consumo de CPU por  servidor

Este método direciona cada nova conexão de Smartclient para o servidor com menor consumo de CPU no momento, como informado pelo monitoramento ativo dos servidores.

O consumo de CPU dos servidores é atualizado a cada 5 segundos, e é um valor de maneira geral bem volátil, portanto este método de balanceamento pode ser útil apenas em ambientes específicos.

Um outro detalhe importante é que o consumo de CPU é do sistema como um todo, não apenas do

Inclusão de trecho
application server
application server
nopaneltrue
.

Isto é, se vários

Inclusão de trecho
application server
application server
nopaneltrue
s estiverem sendo executados no mesmo sistema, todos eles vão reportar o mesmo valor de consumo de CPU.

O consumo de de CPU é medido em porcentagem. Isto é, se um servidor aparece com um consumo de 10% de CPU, isto indica que nos últimos 5 segundos da amostragem, no sistema onde este servidor está sendo executado os cores de processamento da máquina trabalharam aproximadamente 10% do tempo. Se o consumo aparece como 100%, isto indica que os cores de processamento trabalharam 100% do tempo (isto é, o sistema está sobrecarregado).

Como não existe nenhum caso especial neste tipo de balanceamento, não serão mostradas as telas ilustrativas.