You are on page 1of 11

Balanceamento de carga entre servios (LoadBalance)

Quando existe uma grande quantidade de usurios que utilizam o sistema, e o servidor (hardware) no possui uma configurao ideal para comportar todas as conexes simultaneamente, mas h mais de um servidor disponvel, pode-se configurar balanceamento de carga de conexes, para permitir a escalabilidade da aplicao.
Para que isto seja possvel, "nomeamos" um servidor intitulado de "servidor Master" que ser o responsvel por administrar o balanceamento.

Configurando o servidor Master


O nico arquivo de configurao (xxxsrv.ini) que ser alterado com as configuraes abaixo o do servidor Master, pois ele quem administrar o balanceamento de carga de conexes. Todos os usurios se conectaro inicialmente ao servidor Master, e este quem efetuar o balanceamento de carga das conexes para os outros servidores. Nos arquivos de configurao (*.ini) dos outros servidores ser alterado apenas a chave "RootPath", para que eles peguem a mesma base de dados do servidor Master.
[ServerNetwork] Servers=SERVER2, SERVER3 MASTER MasterConnection=0 CONEXO [SERVER2] Type=TCPIP Server=172.16.77.42 --> O SERVIDOR MASTER NO RECEBE --> NO INFORME O NOME DO SERVIDOR

Port=1234 Connections=1 [SERVER3] Type=TCPIP Server=172.16.75.62 Port=1235 Connections=1

Configurao dos outros servidores


Conforme citado acima, nos demais servidores a nica coisa que ser alterada a chave " RootPath" do arquivo de configurao do TOTVS Application Server. Para isso, o diretrio raiz (P10), do servidor Master, deve ser compartilhado com direitos apenas para um usurio que ser usado por todos os servios. Assim, os outros usurios no conseguiro acesso a este diretrio. Isto necessrio para que todos os servidores exerguem a mesma base de dados. Supondo que a base de dados esteja no servidor Master, os arquivos de configurao (*.ini) ficariam assim:
[Environment] SourcePath=C:\XXX\APO RootPath=\\SIGAMASTER\XXX\AP_DATA\ --> Veja que a raiz est sendo apontada para o servidor Master. StartPath=\SIGAADV\ ou \SYSTEM\ (as demais configuraes continuam iguais)

Observaes

Cada servidor dever ter o seu build e repositrio, sendo que a base de dados fica centralizada no servidor Master ou no servidor de banco de dados. O balanceamento de carga de conexes monoplataforma para o TOTVS Application Server. Isso significa que o MASTER e todos os SLAVES devem rodar no mesmo sistema operacional. Quando for realizada qualquer atualizao de build e o repositrio no servidor Master, a mesma alterao dever ser feita nos outros servidores. Um mesmo usurio Windows deve ter direitos na pasta compartilhada (RootPath) e dever ser um usurio Administrador, para que possa ser associado ao servio de cada servidor. Para verificar onde os usurios esto conectados, basta utilizar a aplicativo TOTVS Monitor em cada servidor.

Crie sees [TCP] no arquivo de configurao, do TOTVS Smart Client, para receber conexo dos slaves (TCP1, TCP2, TCP3 e TCPN).
[TCP1] Server=Slave1 Port=1237 [TCP2] Server=Slave2

Port=1239 [TCP3] Server=Slave3 Port=1241

Ao abrir o TOTVS Monitor, informe qual comunicao [TCP] que deseja verificar as conexes.

O nome do ambiente e portas de comunicao deve ser idntico para todos os servidores. Separe em um servidor dedicado, um TOTVS Application Server para o ambiente de compilao: compilao uma operao crtica, exclusiva, que no deve ser executada no mesmo servio do TOTVS Application Server que est atendendo conexes de usurios do TOTVS Smart Client e ambiente de produo. No caso de balanceamento de carga de conexes em schedule, deve-se escolher um slave para receber a conexo. Lembre-se que o servidor Master NO recebe conexes. O valor da chave Connections determina a distribuio de conexes entre os slaves usando RAZO MATEMTICA (Exemplo: 1:2:1) O valor de RootPath=\\SIGAMASTER\XXX\AP_DATA\ deve ser a mesma para todas as instncias para os ambientes [Environment] de mesmo nome. Para mais informaes, consulte a documentao da seo [ServerNetwork]. Reserve 2 GB para cada TOTVS Application Server criado que pode ser na mesma mquina (desde que tenha capacidade para isso). No ambiente de balance cada ambiente deve ter seu RPO (todos iguais). NO compartilhe RPO em rede, pelos seguintes motivos: o Em casos conhecidos os logs mostram que o sistema operacional est causando os erros de comunicao nos servidores de aplicao e no nas estaes. o As mensagens que as estaes enviam no momento de uma nova conexo mostram que foi a parte servidora da operao que cortou a conexo de rede. o Os servidores de aplicao fazem leitura intensiva dos RPOs quando executam o ERP, pois neles esto compiladas todas as regras de negcio, se o RPO compartilhado em rede, tem como resultado: 1. Degradao na performance de execuo dos servidores de aplicao que utilizam o RPO compartilhado (trfego de RPO em rede). 2. O aumento do consumo de recursos de rede nos servidores que compartilham RPO, tipicamente, saturam o uso das interfaces de rede, criando uma concorrncia de transmisso de dados com as estaes que utilizam o TOTVS Smart Client.

Melhoria Novo processo de monitoramento e controle de memria


Esta build contm um novo recurso de monitoramento de memria da aplicao TOTVS Application Server, que alm de monitorar a memria em uso pelo servio do sistema ERP, toma aes preventivas para bloquear a entrada de novas conexes das aplicaes TOTVS Smart Client caso a memria em uso pelo TOTVS Application Server esteja prxima de um limite de alocao de memria definido automaticamente ou configurado explicitamente.
Situao Utilizao do TOTVS Application Server com ou sem balanceamento de carga. Durante a execuo de programas e conexes remotas em processamento no TOTVS Application Server, as aplicaes em execuo utilizam a memria do equipamento de forma dinmica, alocando blocos de memria em quantidade e tamanho necessrio para a execuo das aplicaes. Dependendo da plataforma (Hardware + Sistema Operacional) utilizada, existe um limite de consumo de memria, que uma vez atingido, provoca ocorrncias crticas no TOTVS Application Server, descritas como "Memory Full", seguida de ocorrncias de erro crtico "Access Violation". A partir da build 7.00.090818P, o TOTVS Application Server possui um processo dedicado ao monitoramento de memria. Este processo identifica a existncia e qual o limite de memria utilizada pela aplicao logo que o servio iniciado, alm de verificar se foi definido um limite de alocao de memria residente para este servio no arquivo de configurao (totvsappserver.ini) do TOTVS Application Server. Durante a permanncia do servio ativo, este processo acompanha em intervalos de 1 segundo a memria em uso desta instncia do TOTVS Application Server, tomando aes preventivas e registrando informaes de anlise no log de console. Melhoria Para isso, definido um limite de alocao de memria residente, no arquivo de configurao (totvsappserver.ini) do TOTVS Application Server, na chave ServerMemoryLimit=NNNN, da seo [General], onde NNNN o limite em MB que ser considerado. Desta forma, ao atingir 80% do limite de alocao de memria, o sistema registra uma ocorrncia de advertncia no log de console ([INFO ][SERVER] [MEMORY] Used memory average WARNING), do TOTVS Application Server, indicando que o status do consumo de memria do servio est em "advertncia". Atingindo 90% do limite, uma nova ocorrncia de advertncia registrada ([INFO ][SERVER] [MEMORY] Used memory average FATAL), notificando que o status de uso da memria "fatal" e que as novas conexes do TOTVS

Ocorrncia

Application Server para este servio foram automaticamente desabilitadas ([FATAL][SERVER] [MEMORY] Used memory OVER SAFE LIMIT. REMOTE CONNECTIONS ARE DISABLED). Uma vez automaticamente desabilitadas, o TOTVS Application Server somente habilitar essas conexes novamente e automaticamente se e quando a condio de utilizao da memria voltar para um ndice abaixo de 80% do limite. No entanto, caso a alocao de memria continue aumentando, ao atingir e ultrapassar 95% do limite definido, uma nova ocorrncia registrada notificando que o consumo de memria atingiu o nvel "crtico" ([INFO ][SERVER] [MEMORY] Used memory average CRITICAL). Essas aes visam evitar que o servio do TOTVS Application Server chegue a uma condio onde a execuo de um programa no consiga mais alocar memria ([FATAL][SERVER] Memory Allocation Failure), pois uma vez que haja efetivamente um falha de alocao, a aplicao pode tornar-se instvel e apresentar problemas de congelamento de conexes, access violation, exception stack overflow, memory full, problemas ao baixar o servio, instabilidade e comportamentos inesperados nas aplicaes e programas que ainda esto conectados e em execuo neste servio. No ambiente com balanceamento de carga, onde por qualquer razo um servio slave do TOTVS Application Server atingiu 90% do limite estabelecido de alocao de memria, este servio desabilita, automaticamente, as novas conexes do TOTVS Smart Client e o servio de balanceamento de carga (Master ou Balance) no redicionar nenhuma conexo do TOTVS Smart Client para aquele slave enquanto as conexes estiverem bloqueadas. Desta forma, nenhuma ao tomada com as conexes que j esto em execuo naquele servio para que continuem o processamento normalmente. Se uma dessas conexes em processamento continuar alocando memria, fatalmente o limite estabelecido atingir os 100% e, a partir do momento que o sistema operacional no for mais capaz de fornecer memria para o TOTVS Application Server, uma falha de alocao de memria ser registrada no log de console do TOTVS Application Server com a informao de "Memory Allocation Failure (XXX Bytes)", onde XXX ser a quantidade de memria solicitada que no foi atendida. Este cenrio pode apresentar os seguintes comportamentos:

A ocorrncia de falha de alocao de memria dispara uma rotina de recuperao de erro, que pode precisar de mais memria inclusive do que a tentativa de alocao. Neste caso, o servio do TOTVS Application Server fechar, automaticamente, e derrubar todos os usurios conectados neste servio interrompendo os processos em andamento. Alm de registrar no log de console a seguinte ocorrncia:[FATAL][SERVER]APPLICATION SHUTDOWN

DUE UNRECOVERABLE MEMORY ALLOCATION FAILURE Uma falha de recuperao em tratamento de erro de alocao de memria uma ocorrncia irrecupervel e qualquer tentativa de manter o servio no ar causaria os comportamentos j mencionados anteriormente, como o congelamento das estaes e a ao final necessria inevitavelmente seria a parada do servio para ento sub-lo novamente.

A ocorrncia de falha de alocao dispara uma rotina de recuperao, que consegue alocar memria suficiente para tratar a ocorrncia. Neste caso, apenas a ocorrncia crtica de falha de alocao (Memory Allocation Failure) registrada e o processo atual que apresentou falha de alocao de memria finalizada, liberando a memria em uso por este processo. Neste caso, havendo sucesso na gerao do log de erro/ocorrncia, finalizao normal apenas daquele processo e com o tempo as conexes em processo forem finalizadas, quando a ocupao de memria do servio, do TOTVS Application Server, baixar de 80% do limite, o servidor automaticamente voltar a um status seguro de ocupao de memria e permitir novas conexes ao servio.

No entanto, vale ressaltar que, em qualquer um dos cenrios descritos, onde a ocupao de memria de um ou mais servios do TOTVS Application Server apresentarem um estado de ateno (WARNING) ou bloqueio automtico de conexes, deve-se buscar mais informaes sobre a causa desta ocorrncia, pois a reincidncia ou agravamento de ocorrncias desse tipo, podem comprometer a operabilidade do sistema. Este mecanismo serve para apontar uma possvel falha ou mal dimensionamento de ambiente dada a carga de trabalho atual, gerando um registro/log com informaes de anlise que permitam um diagnstico mais preciso das ocorrncias registradas no TOTVS Application Server. imprescindvel que este log juntamento com o arquivo de configurao (totvsappserver.ini) sejam fornecidos para anlise quando da abertura de um chamado.

Novas mensagens no log de console do TOTVS Application Server

[INFO ][SERVER] APP Virtual Address Allocation Limit .... Indica o limite de alocao de memria (MB) por aplicao, conforme determinado pelo sistema operacional. Ao utilizar o TOTVS Application Server em plataformas Windows, os limites podem ser de 2048 MB, 3072 MB ou 4096 MB.

Observao: Esta informao registrada no log de console do TOTVS Application Server quando o servio iniciado.

[INFO ][SERVER] Memory Monitor Virtual Address LIMIT .... Quando no especificado o limite de memria no arquivo de configurao (totvsappserver.ini), o TOTVS Application Server assume o limite de endereamento virtual (APP Virtual Address Allocation Limit) como sendo o limite de alocao deste servio em MB. Observao: Esta informao registrada no log de console do TOTVS Application Server quando o servio iniciado.

[INFO ][SERVER] Memory Monitor Resident LIMIT ........... Quando especificado um limite de memria no arquivo de configurao (totvsappserver.ini), do TOTVS Application Server, o processo de monitoramento ir considerar o limite especificado em MB como limite de memria residente alocado pela aplicao.

[INFO ][SERVER] [MEMORY] Used memory average <STATUS> Dados os limites especificados, quando a alocao de memria do servio, do TOTVS Application Server, transitar entre um estado e outro, o processo de monitoramento de memria registrar a mensagem no log de console, do TOTVS Application Server, onde <STATUS> indicar a condio do processo (WARNING, FATAL, CRITICAL ou NORMAL), acompanhado dos seguintes dados adicionais. Estes dados so internos da aplicao e servem de base para a anlise da ocorrncia. Exemplo: Neste exemplo, obtido de uma mquina que utiliza Windows em plataforma 32 Bits, em que foi configurado um limite de 1024 MB (1GB) de memria residente mxima para o TOTVS Application Server, onde o status atual WARNING: [INFO ][SERVER] [MEMORY] Used memory average <WARNING> (Contadores de processos internos do TOTVS Application Server) ----------- Total Thread Count Total Threads Thread WThread RmtSockThread SockServer -----------... 13 ... 2 ... 9 ... 1 ... 1

(Informaes de memria de uso global / interno) ----------- Global List Info -------------IMAP Glb List ... 0.00 KB. Count 0 Variable Glb List ... 0.00 KB. Count 0 Session Glb List ... 0.00 KB. Count 0 SymTab List ... 333.84 KB. Count 19411

(Informaes de pools internos de memria do kernel do TOTVS Application Server) ----------- SmartHeap Pools Info ---------ctSimplePool ... 3.98 Kb. Count 0 ctDtmPool ... 3.98 Kb. Count 0 ctIntervalPool ... 3.98 Kb. Count 0 decimalPool ... 3.98 Kb. Count 0 stringPool ... 2759.30 Kb. Count 173870 rContentPool ... 263.91 Kb. Count 3571 namedVarPool ... 71.95 Kb. Count 17 instrVarPool ... 199.92 Kb. Count 3479 sumPool ... 71.95 Kb. Count 1 comparePool ... 71.95 Kb. Count 2 asnParamPool ... 3.98 Kb. Count 0 localEnvPool ... 71.95 Kb. Count 11 interFCPool ... 71.95 Kb. Count 8 directFCPool ... 71.95 Kb. Count 7 inter4GLFCPool ... 3.98 Kb. Count 0 prgCodePool ... 3719.06

Kb. Count 11539 asnBasePool ... Kb. Count 17 ctCodeBlockPool ... Kb. Count 100 cctCodeBlockEnv ... Kb. Count 2 ctCodeBlockRef ... Kb. Count 6 ctCodeBlockInstr Kb. Count 6 ctAPXmlDocInterfacel Kb. Count 0 ctClassData Kb. Count 643 ctAPXmlItem Kb. Count 0 ctPrgFunctXRefEle Kb. Count 7464 ctIdentifier Kb. Count 12 Kb. ... ... ... ... ... ... 71.95 3.98 135.94 3.98 199.92 71.95 8173.36 71.95 71.95 71.95 71.95

TOTAL POOLED MEMORY ...

(Resumo de alocao de memria da mquina) ----------- OS Memory Summary ------------Physical memory . 3315.54 MB. Used 1513.37 MB. Free 1802.17 MB. Paging file ..... 6469.21 MB. Used 1783.86 MB. Free 4685.35 MB.

(Resumo de alocao de memria da aplicao) ----------- APP Memory Summary Service Memory Capacity MB. Service Virtual Address MB. Service Resident Memory MB. -----------... 2047.88 ... ... 1118.72 875.47

[INFO ][SERVER] [MEMORY] VMA Avg

0.55 - Peak

1118.72 MB. - SL

2047.88 MB. 0.85 - Peak

[INFO ][SERVER] [MEMORY] RES Avg 875.45 MB. - UL 1024.00 MB.

Os dados adicionais apresentam as informaes importantes para anlise. Observe que, onde houve a mudana de status de alocao de memria para WARNING, temos uma imagem de utilizao de memria do equipamento que possui 1802.17 MB de memria fsica disponvel, sendo que o servio do TOTVS Application Server pode enderear at 2047 MB de memria e possui 1118.82 endereada, das quais 875.47 MB so de memria residente, o que corresponde a 85% do limite definido de 1024.00 MB.

[INFO ][SERVER] [<DATE> <TIME>] Shrinking Memory Pools ... Em intervalos de 60 ( sessenta) segundos, contados a partir da subida do TOTVS Application Server, executado um procedimento automtico para reorganizar reas de memria alocadas para determinados objetos de processamento de uso interno do TOTVS Application Server. Em builds anteriores, esta operao era realizada a cada 3 minutos, sem emitir nenhum tipo de aviso. A partir da build atual, ser registrado um log informativo da execuo deste processo e, caso a chave DebugThreadUsedMemory, da seo [General], esteja habilitada, esta mensagem ser acompanhada do status atual do servidor, que normalmente apresentada apenas na mudana de status de ocupao de memria.

Informaes adicionais sobre o monitoramento de memria


Para analisar o consumo de memria por processo/conexo, pode-se configurar a chave DebugThreadUsedMemory=1, na seo [General], do arquivo de configurao (totvsappserver.ini) do TOTVS Application Server. A configurao dessa chave nesta nova build, far com que o processo de monitoramento de memria registre no arquivo de log de console o status e informaes sobre o consumo de memria do servio em intervalos de 1 minuto, a partir do incio da execuo do servio.

Consideraes para plataforma LINUX


No ambiente Linux, existe um limite de endereamento virtual de memria, configurado a partir da instruo "ulimit -v", cuja

recomendao que o mesmo esteja ilimitado (ulimit =v unlimited). Neste caso, quando o TOTVS Application Server iniciado, o mesmo no conseguir determinar um limite de memria para a aplicao e o monitoramento apenas registrar a quantidade de memria em uso. Desta forma, para definir um limite de memria residente para o engine de monitoramento, deve-se especificar o limite em MB atravs da chave ServerMemoryLimit, na seo [General], do arquivo de configurao (totvsappserver.ini) do TOTVS Application Server. Alm disso, no ambiente Linux, quando da transio de um estado de alocao de memria para outro, as informaes sobre o resumo de alocao de memria da mquina so apresentadas de forma diferente da build do TOTVS Application Server para plataforma Windows, mas os dados informados so considerados da mesma forma. Melhoria realizada conforme anlise das necessidades da ferramenta e melhoria contnua da plataforma de desenvolvimento do TOTVS Application Server. Informaes No h BOPS ou FNC relacionados. adicionais Disponvel a partir da build 7.00.090818P-091104 Contedo Colaborativo + Novo Tpico

You might also like