Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 5 Próxima »

É importante para um administrador do sistema acompanhar o crescimento de memória do Appserver, observar os períodos do dia mais críticos de utilização dos usuários e saber assim os momentos mais oportunos para troca de rpo ou reinicialização de serviços, ou até para saber quando é o momento de crescer o ambiente (na horizontal) com a disponibilização de novos slaves no balanceamento de carga. Pensando nessa necessidade foi desenvolvimento uma nova funcionalidade no Appserver que permite logar em um arquivo essas informações de variação de memória, assim como a chave ServerMemoryInfo, porem em um formato que seja facilmente exportado para um aplicativo de planilha eletrônica e conseguir criar um gráfico dessas informações, tornando mais fácil sua leitura.

Uma outra forma de usar esse recurso é junto com a função ShowInfMem, fazendo com que cada chamada especifica no seu programa possa ser logado no arquivo, podendo realizar facilmente o diagnostico dos pontos a serem logados.

Modo de utilização e exemplos de utilização

É necessário que as seguintes chaves de ini sejam ativadas no arquivo appserver.ini:

appserver.ini
[GENERAL]
...
DebugThreadUsedMemory=1
EnableMemInfoCSV=1
;A chave abaixo é para indicar um local especifico para geração do relatório, opcional
MemInfoCSVFile=c:\logcsv\server01.csv
;O valor da chave abaixo, por padrão, é 1, porem se desativada o recurso do relatório em CSV não terá o efeito desejado
MemPoolShrink=1
; ------------------------
 

No caso acima, será criado o arquivo AAAAMMDDserver01.csv, com o intuito de manter registrado o dia em que o server foi iniciado e seu registro desde então (para cada reinicialização, em dias diferentes, um novo arquivo será criado). Em caso de não indicar um nome, o arquivo será registrado na pasta do Appserver com o nome AAAAMMDDdefault.csv. O arquivo, ao ser aberto por uma planilha eletrônica, poderá ser visualizado como abaixo:

 

As colunas em A indicam momentos específicos de coletas de dados dos pools de memórias, as colunas em seguida indicam o tipo de memória, e o número de objetos alocados na memória. A partir desse dados, é possível extrair um gráfico do consumo de memória como o exemplo a seguir:

Na execução desse exemplo, foi utilizado as chamadas da função ShowinfMem em um programa teste, indicando momentos específicos de inicio e fim, a caráter de debug. Pode-se observar a realização de diversas execuções que se mostraram estáveis no consumo de memória. Para esses casos de debug, a fim de evitar falsos positivos, segue as mesmas recomendações da função ShowInfMem: deve-se realizar o uso apenas de uma thread entre as comparações dos valores retornados pela função evitando processos concorrentes.

Além disso, o mecanismo de monitoramento, graças a chave do MemPoolShrink ativa, registrará nos momentos de compactação da memória do pool, um novo registro no arquivo csv a fim de que o recurso de log não seja utilizado somente em debug de sua aplicação, mas ser logado também na utilização do Appserver como um serviço ou na execução do ERP.

 

Veja também

DebugThreadUsedMemory, ShowInfMem - ADVPL, ShowInfMem

 

  • Sem rótulos