Lentidão na aplicação

5 respostas
G

Olá pessoal

Estou com uma aplicação que após fazer uma quantidade grande de cálculos e transações no banco de dados, ela começa a apresentar muita lentidão.
Eu não faço ideia do que esteja provocando essa lentidão.
Não sei se ajuda em alguma coisa, mas a aplicação é feita com Maven, Hibernate, SQLServer e roda em um servidor JBoss.

Alguém sabe alguma coisa que cause lentidão, ou alguma configuração que pode ser feita?

Obrigado!

5 Respostas

emanuelCruz

Já presenciei problemas de lentidão das mais variadas causas, desde índices faltando a índices em excesso, configuração do servidor, pode ser muita coisa mesmo. Pelas informações passadas, eu teria mais perguntas do que respostas para o problema.

A primeira coisa é descobrir aonde está a lentidão. No acesso aos dados? No acesso ao servidor? Fazendo uma consulta fora da aplicação, a lentidão é mesma?
A lentidão é generalizada ou específica de uma parte do sistema?
Como você controla as sessões do Hibernate, utiliza o Spring? Faz na mão? Não está compartilhando a mesma sessão entre as requisições?
Como você controla as conexões com o banco? Utiliza algum pool?
Está utilizando cache do hibernate?

G

Como eu não tenho muita experiência, não sei muito bem o que pode causar a lentidão, por isso não sei direito quais informações te passar, mas vamos lá: (responderei o que eu sei do sistema, não envolvido no desenvolvimento desde o começo)

A lentidão ocorre após uma grande quantidade de transações com o banco, então não sei te responder se o acesso que está lento, ou os acessos que deixam o resto lento

A lentidão é generalizada.

Não utilizo Spring, faço tudo na mão. Todas as requisições estão utilizando a mesma sessão.

Não sei se está sendo usado o cache, pelo que sei, o hibernate está com as configurações default.

Como já disse, não tenho muita experiência, caso tenha respondido algo errado, me corrija por favor! (:

rodrigo.uchoa

Se envolve banco o primeiro lugar que eu olharia é na parte de persistência mesmo, ou seja, tudo que diz respeito ao hibernate. Infelizmente fica difícil ajudar sem poder olhar. Se o footprint de memória ta ficando muito grande por causa do cache de primeiro nível, tenta também aumentar a memória da JVM disponível pro JBoss.

emanuelCruz

Todas as requisições estão compartilhando a mesma sessão do Hibernate? Exemplo: guardando a sessão em uma variável estática e usando entre as requisições?
Se sim está aí o seu problema. O certo é criar uma sessão do Hibernate para cada requisição.

javaflex

Qual ISOLATION LEVEL está usando? Dependendo do caso é melhor usar o SNAPSHOT ou READ_COMMITTED_SNAPSHOT. Mais informacoes: http://msdn.microsoft.com/pt-br/library/ms173763.aspx

Criado 22 de setembro de 2014
Ultima resposta 22 de set. de 2014
Respostas 5
Participantes 4