Tempo aproximado para leitura: 00:04:06 min
Dúvida
Como funciona o consumo de memória do agente do PASOE?
Ambiente
Framework - Framework (Linha Datasul) - PASOE - A partir do OpenEdge 12
Solução
O consumo de memória do agente passa a ficar mais evidente no PASOE - Progress Application Server for OpenEdge do que era observado no Appserver Clássico. O principal motivo disso é que o agente do PASOE passou a trabalhar com mais de uma sessão ABL, de forma multi-thread, acumulando em um único processo o que antes era dividido em vários agentes no modelo clássico.
Isso não quer dizer que o PASOE passou a requerer mais memória que o Appserver clássico. Se for somada toda a memória consumida pelos agentes no modelo antigo chegará ao mesmo valor, ou muito próximo, do que é consumido pelo PASOE.
Uma diferença importante está na forma como o PASOE aloca a memória do servidor. Conforme vão sendo iniciadas as sessões dentro de um agente, estas vão solicitando memória para o agente e este para o Sistema operacional. Quando as sessões são eliminadas por inatividade, em um momento de baixo número de requisições, essas sessões liberam a memória que elas ocupavam, porém o agente não devolve essa memória para o Sistema operacional porque ele entende que, quando alcançar um novo pico de utilização, esta memória será necessária e a mesma já estará reservada para isso. Neste cenário o PASOE privilegia o desempenho, pelo fato de já estar com a memória para ele.
Outra característica do PASOE é sempre direcionar as novas requisições para as primeiras sessões do primeiro agente. Isso facilita que as sessões de outros agentes fiquem inativas e venham a ser eliminadas por inatividade. Quando todas as sessões de um agente ficam ociosas, os agentes adicionais que foram criados também ficam ociosos e são eliminados por inatividade. Neste cenário a memória que era alocada por eles volta para o Sistema operacional.
Quando é indesejado que a memória permaneça alocada para o agente, pode ser utilizado o artifício de configurar mais agentes com uma quantidade menor de sessões em cada um. Assim, conforme eles forem ficando ociosos, a memória vai sendo liberada, exceto pelo primeiro agente que, conforme já explicado, nunca devolve a memória que consumiu, porém a reutiliza para novas requisições.
Apenas um cuidado é para não trabalhar com um número muito baixo de sessões por agente. O melhor desempenho final e consumo de recursos ocorre quando se trabalha com poucos agentes e uma quantidade maior de sessões em cada um. A prática e a observação auxiliará a encontrar a configuração mais adequada para cada ambiente.
Apenas como sugestão, procurar trabalhar com pelo menos 10 sessões por agente. Acima de 50 sessões, seria interessante dividi-las em mais agentes.
Cada sessão, no PASOE, equivale a um agente no modelo clássico, consequentemente, cada sessão realiza as suas conexões de bancos de dados, consumindo licenças destes.
Saiba mais
Informações adicionais em:
Framework - Linha Datasul - TEC - Boas práticas de configuração do OpenEdge 12 e PASOE para o produto Datasul
Framework - Linha Datasul - TEC - Como ativar o timeout do PASOE
0 Comentários