Login Registre-se
Tomcat 8.5 problema de memória  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
xinaidao

JavaC Membro

Membro desde: 22/09/2017 02:31:52
Mensagens: 6
Offline

Boa noite pessoal,

estou com o seguinte cenário.
Tenho um sistema web que gera NFC-e através da biblioteca do Samuk - ótima por sinal.
O sistema roda em Tomcat 8.5 e java 8.

Hoje a aplicação está rodando para somente 3 usuários que ficam logados através do session.

O que acontece é que o tomcat conforme o tempo sendo executado vai aumentando a memória também aumenta...
Segue abaixo imagem:


Como podem ver a memória vai aumentando conforme os dias passam....
Já efetuei testes na minha máquina, e quando vou gerar uma NFC-e realmente a memória do tomcat salta de 300mb para 600 ~700mb, porém volta ao "normal" 250mb depois...
No servidor a memória não volta ao normal, só aumenta.


Alguém já passou por isso?

Efetuei testes, verifiquei a estrutura do projeto e nada... se alguém puder ajudar ficaria muito agradecido..

forte abraço, valeu
GGarcia

JavaC Membro
[Avatar]

Membro desde: 28/05/2013 17:12:21
Mensagens: 223
Offline

Bom dia.

Ao configurar o Tomcat no seu cliente, não configure nenhum valor em memória Inicial, apenas coloque 1024 em memória final ou a quantidade de memória que seu sistema requer.

Nosso sistema também é web e roda em Tomcat ou Glassfish. Para você ter ideia, tivemos que substituir o Tomcat pelo Glassfish apenas em clientes que emitiam + 2500 NFC-e por dia.

Fora esses, todos os outros rodam com memória máxima de 1024 e, em alguns casos, quando volume de transações e usuários aumenta, colocamos 2048. O GC faz bem o seu trabalho e ele não surta.

Acho que a única diferença que temos ocorre na infra. Os servidores do nosso sistema reiniciam o Tomcat todos os dias as 6 da manhã, porque temos runners automatizados que executam quando o sistema faz o boot up, fazendo conferência de notas não emitidas, gerando relatórios, romaneios, renderizando caches para agilizar o uso no dia, etc.

Outra coisa que você pode verificar é o timeout das sessões. Por acaso você está "chutando" conexões inativas por mais de X horas?

Fora isso, pode ser alguma estrutura de dados que você carrega em modo singleton ela vai inflando com o uso e não limpa informações antigas. Pode ser um dos motivos também.

If you're here, who's running hell?
xinaidao

JavaC Membro

Membro desde: 22/09/2017 02:31:52
Mensagens: 6
Offline

Fala Garcia,
muito obrigado pelo retorno..

Ao configurar o Tomcat no seu cliente, não configure nenhum valor em memória Inicial, apenas coloque 1024 em memória final ou a quantidade de memória que seu sistema requer.

Essa configuração é setada pela hospedagem, pois contratei Tomcat com 490mb de memória ( meu pc roda o sistema com uns 350mb e não tem esse problema de memória)...

Acho que a única diferença que temos ocorre na infra. Os servidores do nosso sistema reiniciam o Tomcat todos os dias as 6 da manhã, porque temos runners automatizados que executam quando o sistema faz o boot up, fazendo conferência de notas não emitidas, gerando relatórios, romaneios, renderizando caches para agilizar o uso no dia, etc.
Implementei essa dica, configurei para reiniciar o tomcat todos os dias...
mas claro, é de forma paliativa, o correto seria eu determinar pq ocorre esse aumento de memória que não baixa nunca...

Outra coisa que você pode verificar é o timeout das sessões. Por acaso você está "chutando" conexões inativas por mais de X horas?

O que eu faço hoje é controlar o acesso por session... seto como

No caso se o usuário marcar como "Permanecer conectado" ele fica conectado por 30 minutos.

Referente da session, também pensei que pudesse ser isso. Mas acredito que está correto essa parte....


Fora isso, pode ser alguma estrutura de dados que você carrega em modo singleton ela vai inflando com o uso e não limpa informações antigas. Pode ser um dos motivos também.
Singleton seria usar o getInstance() para garantir apenas uma instância, seria isso né?
Poisé, na minha aplicação única fez usada é no Calendar.getInstance() e na geração de NFC-e,



Será que isso pode ser o responsável pelo aumento de memória?

Novamente, obrigado pela ajuda.
att Bruno




Esta mensagem foi editada 1 vez. Última atualização foi em 20/06/2018 15:28:37

 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.9 © JForum Team