oi pessoal, tenho uma aplicação que utiliza web service rest (xml) para troca de mensagens.A questão é que percebi que está consumindo muita memoria do servidor. Alguem sabe como faço para amenizar esse gasto todo?
Será que tem algo que posso fazer para melhorar a performance?
Primeiramente você tem que identificar qual processamento é feito p/ que o aumento de memória ocorra…
Escrita em disco?
Acesso à uma outra máquina?
Gravação no banco de dados que está na mesma máquina?
Onde é o gargalo?
A partir desta descoberta é que você vai poder pensar em como melhorar… fora isso… vão ser só especulações…
Abs
J
javaCBA
no caso, a comunicação é feita com um banco de dados, e está na mesma maquina.
igomes
Esse servidor é linux/windows ?
J
javaCBA
linux - centOs 6.5
igomes
se vc der um top, qual o processo que está com o maior consumo ?
J
javaCBA
o glassfish onde ta rodando ws
igomes
e se vc tirar o ws do container o processo do glassfish cai certo ?
J
javaCBA
eu percebo que sobe mto o processamento e é como se o garbage collector não conseguisse aliviar.
Mesmo a requisição sendo rapida, e liberando os recursos.
Se eu tirar, dai não consigo testar kkkkk
igomes
Bom, quem usa esse ws, está liberando os recursos ?
J
Solucao aceita
javaCBA
tive q aumentar a capacidade do servidor… porque o acesso ao ws era grande, e o GF estava usando mais memoria. Aumentei memoria e configurei a memoria swap
javaflex
Glassfish pra Webservice REST é canhão pra matar mosquito. Claro que tudo que está usando na aplicação também pode influenciar, bombas como EJB, Hibernate/JPA (quando se abusa), etc. Se mais tarde precisarem usar servidor na nuvem, quanto menos recursos usar melhor para pagar menos mensalmente.
Por solução rápida já mudaria pra um container web Tomcat. Java é pesado por natureza, mas usar soluções leves pra web como por exemplo SpringBoot, e se puder, SQL nativo, já melhora bastante a situação.
J
javaCBA
mas o glassfish não fica dedicado somente para o webservice. Ele tem outras aplicações que fazem uso dos recursos (hibernate/jpa, queue, ejb, jms, etc).
Por solução rápida já mudaria pra um container web Tomcat. Java é pesado por natureza, mas usar soluções leves pra web como por exemplo SpringBoot, e se puder, SQL nativo, já melhora bastante a situação.
Acho que tudo isso depende mto do que precisa ser feito. O tomcat funciona e ajuda em partes.
Mas dai ser uma “grande” solução…tb eu já acho exagero.
javaflex
Deixei claro que não é “só tomcat”, não escrevi só isso no post, ainda mais dizer que é grande solução. Usar um web container como o tomcat seria só o item mais rápido de mudar com menor mexida no código para começar a emagrecer sua infra, logicamente para o web service. Como você não especificou quase nada, pode ser qualquer coisa, até mesmo problema de programação.