Melhoria – Novo processo de monitoramento e controle de memória
Esta build contém um novo recurso de monitoramento de memória da aplicação TOTVS Application Server, que além de monitorar a memória em uso pelo serviço do sistema ERP, toma ações preventivas para bloquear a entrada de novas conexões das aplicações TOTVS SmartClient caso a memória em uso pelo TOTVS Application Server esteja próxima de um limite de alocação de memória definido automaticamente ou configurado explicitamente.
Abrangência | ERP 10 |
Situação | Utilização do TOTVS Application Server com ou sem balanceamento de carga. |
Ocorrência | Durante a execução de programas e conexões remotas em processamento no TOTVS Application Server, as aplicações em execução utilizam a memória do equipamento de forma dinâmica, alocando blocos de memória em quantidade e tamanho necessário para a execução das aplicações. |
Melhoria | A partir da build 7.00.090818P, o TOTVS Application Server possui um processo dedicado ao monitoramento de memória. Este processo identifica a existência e qual o limite de memória utilizada pela aplicação logo que o serviço é iniciado, além de verificar se foi definido um limite de alocação de memória residente para este serviço no arquivo de configuração (totvsappserver.ini) do TOTVS Application Server. Durante a permanência do serviço ativo, este processo acompanha em intervalos de 1 segundo a memória em uso desta instância do TOTVS Application Server, tomando ações preventivas e registrando informações de análise no log de console. Para isso, é definido um limite de alocação de memória residente, no arquivo de configuração (totvsappserver.ini) do TOTVS Application Server, na chave ServerMemoryLimit=NNNN, da seção [General], onde NNNN é o limite em MB que será considerado. Desta forma, ao atingir 80% do limite de alocação de memória, o sistema registra uma ocorrência de advertência no log de console ([INFO ][SERVER] [MEMORY] Used memory average WARNING), do TOTVS Application Server, indicando que o status do consumo de memória do serviço está em "advertência". Atingindo 90% do limite, uma nova ocorrência de advertência é registrada ([INFO ][SERVER] [MEMORY] Used memory average FATAL), notificando que o status de uso da memória é "fatal" e que as novas conexões do TOTVS Application Server para este serviço 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 conexões novamente e automaticamente se e quando a condição de utilização da memória voltar para um índice abaixo de 80% do limite. No entanto, caso a alocação de memória continue aumentando, ao atingir e ultrapassar 95% do limite definido, uma nova ocorrência é registrada notificando que o consumo de memória atingiu o nível "crítico" ([INFO ][SERVER] [MEMORY] Used memory average CRITICAL). Essas ações visam evitar que o serviço do TOTVS Application Server chegue a uma condição onde a execução de um programa não consiga mais alocar memória ([FATAL][SERVER] Memory Allocation Failure), pois uma vez que haja efetivamente um falha de alocação, a aplicação pode tornar-se instável e apresentar problemas de congelamento de conexões, access violation, exception stack overflow, memory full, problemas ao baixar o serviço, instabilidade e comportamentos inesperados nas aplicações e programas que ainda estão conectados e em execução neste serviço. No ambiente com balanceamento de carga, onde por qualquer razão um serviço slave do TOTVS Application Server atingiu 90% do limite estabelecido de alocação de memória, este serviço desabilita, automaticamente, as novas conexões do TOTVS SmartClient e o serviço de balanceamento de carga (Master ou Balance) não redicionará nenhuma conexão do TOTVS SmartClient para aquele slave enquanto as conexões estiverem bloqueadas. Desta forma, nenhuma ação é tomada com as conexões que já estão em execução naquele serviço para que continuem o processamento normalmente. Se uma dessas conexões em processamento continuar alocando memória, fatalmente o limite estabelecido atingirá os 100% e, a partir do momento que o sistema operacional não for mais capaz de fornecer memória para o TOTVS Application Server, uma falha de alocação de memória será registrada no log de console do TOTVS Application Server com a informação de "Memory Allocation Failure (XXX Bytes)", onde XXX será a quantidade de memória solicitada que não foi atendida. Este cenário pode apresentar os seguintes comportamentos:
No entanto, vale ressaltar que, em qualquer um dos cenários descritos, onde a ocupação de memória de um ou mais serviços do TOTVS Application Server apresentarem um estado de atenção (WARNING) ou bloqueio automático de conexões, deve-se buscar mais informações sobre a causa desta ocorrência, pois a reincidência ou agravamento de ocorrências desse tipo, podem comprometer a operabilidade do sistema. Este mecanismo serve para apontar uma possível falha ou mal dimensionamento de ambiente dada a carga de trabalho atual, gerando um registro/log com informações de análise que permitam um diagnóstico mais preciso das ocorrências registradas no TOTVS Application Server. É imprescindível que este log juntamento com o arquivo de configuração (totvsappserver.ini) sejam fornecidos para análise 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 alocação de memória (MB) por aplicação, 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. [INFO ][SERVER] Memory Monitor Virtual Address LIMIT ....Quando não especificado o limite de memória no arquivo de configuração (totvsappserver.ini), o TOTVS Application Server assume o limite de endereçamento virtual (APP Virtual Address Allocation Limit) como sendo o limite de alocação deste serviço em MB. |
Informações adicionais |
|