Por que o aplicativo Java está lento para clientes no Linux

1

Temos dois servidores Linux que possuem o Apache Tomcat instalado. Um está executando o banco de dados, o outro está sendo executado com o aplicativo Java. Mais de 100 usuários estão conectados aos servidores. Máquinas de servidor são PCs normais quad core que possuem 4 GB de memória. Ele estava funcionando corretamente nos últimos 6 meses, mas o aplicativo começou recentemente a ser executado lentamente. De repente, o aplicativo Java está ficando preso & os usuários não podem trabalhar por algum tempo. Não há problema de rede. Eu estou tentando identificar a razão para isso, se é um problema de máquina ou o problema está no aplicativo Java. Qualquer corpo pode me ajudar com isso?

    
por Sam Cogan 21.06.2009 / 17:30

4 respostas

1

A primeira coisa é determinar se isso é um problema de recurso, ou um problema com o próprio aplicativo.

Eu estaria olhando para os recursos disponíveis nos servidores quando os slodowns acontecem, há um pico de uso de RAM ou CPU, é o banco de dados com problemas para manter as solicitações, etc.

Seu aplicativo se tornou mais popular e está sendo usado por mais usuários, simultaneamente do que costumava usar, quantos usuários estão conectados quando o problema ocorre? Os usuários estão usando o aplicativo com mais frequência ou, talvez, deixando-o conectado o dia inteiro.

Em segundo lugar, poderia ser relacionado ao Java, você atualizou a JVM recentemente e isso causou um problema ou conflito com o aplicativo que está ficando mais lento?

    
por 21.06.2009 / 18:54
1

Eu realmente diria:

  1. Você fez alguma atualização do SO recentemente?
  2. O código do aplicativo Java foi alterado?
  3. O padrão de uso mudou? (no lado do usuário?)
  4. Quem está reclamando que o aplicativo está lento? (Usuários locais e remotos, apenas locais ou apenas remotos?)

As coisas não mudam magicamente. Tem que haver uma peça faltando na foto que você nos apresentou.

    
por 21.06.2009 / 19:34
0

O aplicativo é multi-threaded e houve algum aumento na carga do usuário? Às vezes, o encadeamento de deadlocks em um aplicativo não aparece até que você entre na situação de carga correta e, portanto, pode ser um verdadeiro problema diagnosticar. Há quanto tempo o aplicativo está em produção? Houve um aumento significativo no tamanho do banco de dados nesse período em que consultas malformadas específicas podem estar atrapalhando o sistema?

    
por 21.06.2009 / 19:34
0

2Execute VM virtual contra o processo java e monitore o uso da memória. (se você não puder executar o VirtualVM, execute o jconsole.exe.

Algumas opções de JAVA que você pode definir para ajudá-lo nessa tarefa:

set JAVA_OPTS=%JAVA_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails
set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=8002 -Dcom.sun.management.jmxremote.authenticate=false
set JAVA_MEM=-Xmx1236m
    
por 08.04.2010 / 07:16

Tags