Identificar gargalo

Olá.

Estou com uma aplicação que está apresentando lentidão. Já utilizei as ferramentas JConsole e VisulaVM para observar consumo de CPU e memória Heap, mas não consigo identificar em que ponto está consumindo mais tempo de processamento.

Existe alguma ferramenta que me possibilite identificar gargalo (métodos que mais consomem tempo)?

Características da aplicação: Java 1.6, Hibernate, banco de dados Oracle e utiliza WebLogic como servidor de aplicação.

Atenciosamente,

Sergio

Execute um processo que esta lendo e debug o codigo para ver que linha ele demora mais tempo. Faça testes unitarios do seu codigo, assim vc tem o tempo de execução de cada bloco, se existir funções, triger etc no banco de dados verifique a performance das mesmas.

A maioria dos problemas de “talento” de um sistema é I/O… então eu olharia os métodos de acesso a banco de dados.

Teste unitário???..para verificar tempo de execução tem que ser em um ambiente integrado com massa de dados suficientes. Poderia me explicar melhor como você faz isso?

Sim daniesouza. A maioria dos problemas de “talento” de um sistema é I/O. Eu concordo com você.

Existe alguma ferramenta que me possibilite identificar gargalo (métodos que mais consomem tempo)?

Então… a ferramenta seria testes unitários como o amigo citou acima, você pode usar o jUnit… ou ir pelo famoso system.out…

antes de executar cada método você faz.


			long tempoInicio = System.currentTimeMillis();
			
			executaMetodo();
			
			long tempoExecucao = System.currentTimeMillis() - tempoInicio;
			
			System.out.println("Tempo de execucao do metodo X = "+TimeUnit.MILLISECONDS.toMinutes(tempoExecucao) +" Minutos" );

Use o JUnit para injetar dados em seu banco de dados para vc fazer o teste. Por exemplo cria um for dando 1.000 inserts em sua tabela em sua base de dados dai vc vai ter dados em 1 segundo pra realizar o teste unitario. :slight_smile: