Monitoramento e ajuste de desempenho do Oracle Application Server (alta carga de CPU)

Monitoramento e ajuste de desempenho do Oracle Application Server (alta carga de CPU)

Monitoramento e ajuste de desempenho do Oracle Application Server (alta carga de CPU)

acabei de ser contratado por uma empresa e meu chefe me deu um problema de desempenho para resolver o mais rápido possível. Não tenho nenhuma experiência com Java EE antes no lado do servidor.

Deixe-me começar o que aprendi sobre o sistema e ainda não consegui encontrar a solução:

Temos um servidor de aplicativos Oracle (10.1.) e servidor de banco de dados Oracle (9.2.), o pessoal do software escreveu uma espécie de grande projeto J2EE (projeto X) usando especificamente JSF 1.2 com Ajax, que é usado apenas neste projeto. Eles usam ativamente PL/SQL em seu código.

Então, iniciamos o servidor de aplicativos (máquina Solaris), tudo parece OK. os usuários começam a usar o aplicativo a partir de segunda-feira em locais diferentes (o aplicativo 200 tem contas de usuário, acabei de verificar e vi que o pool de conexões está configurado corretamente, a sessão fica ativa por apenas 15 minutos).

Depois de algum tempo (2 dias) a utilização da CPU aumenta,%60,à noite ainda é o mesmonada mudou (o número de usuários online é quase 1 ou 2 neste momento), mesmoele começa a usar a CPU alocada para outros aplicativos no mesmo servidor porque eles liberaram Se não reiniciarmos o servidor, a utilização será de 90% após 2 dias, o aplicativo ficará tão lento que os usuários finais começarão a ligar.

O principal problema é que os engenheiros de software dizem que o código está claro, e os gerentes de sistema e DBA dizem que temos a configuração correta, os outros aplicativos parecem OK porque esse problema acontece apenas para aplicativos X.

Começo a copiar o banco de dados para uma plataforma de teste e atualizo para a versão mais recente, também faço o mesmo com o servidor de aplicação (Weblogic) caso haja bug ou não. Eu testei sozinho apenas um usuário e o painel de administração do weblogic, posso rastrear os threads e despejá-los. notei que há alguns tópicos aparecendo como ummonopolizando. quando verifiquei os manuais e controlei o rastreamento, vejo que ele me direciona o número da linha onde o código PL/SQL é chamado de um arquivo .java. O software eng. diz que sim, temos códigos PL/SQL realmente complexos, masqual é a relação com o servidor de aplicativos?esse é o problema do servidor de banco de dados, acho que eles estão certos...

Sei que a pergunta tem muitas lacunas, gostaria de detalhar mais, mas agradeço a maneira como você me orienta.

Desde já, obrigado ...

Editar: O servidor em CPU e memória suficiente para executar aplicativos mais complexos

Responder1

Chamadas PL/SQL pesadas devem bloquear o thread - portanto, o uso da CPU deve diminuir.

Minha primeira parada para um servidor de aplicativos lento é verificar os logs do gc - procurando por coleções importantes frequentes (que indicam um vazamento de memória ou que a JVM simplesmente precisa de mais memória).

Os sistemas que cuido tornaram-se ummuitomais estável depois de mudar dos drivers grossos do Oracle para os drivers jdbc leves - embora os problemas tenham se manifestado principalmente como falha do contêiner.

Os logs devem ser um bom indicador de quaisquer problemas no sistema - mas depende muito do que os desenvolvedores escolhem escrever neles. SQL lento pode resultar no esgotamento do pool de conexões - certifique-se de que o pool esteja registrando estatísticas de conexão. Certifique-se também de que o ulimit esteja configurado corretamente para a JVM.

Como você está executando o 9i na camada do banco de dados, você não terá a funcionalidade AWR - você terá que executar o statspack (mas isso já deve ser uma prática padrão para o gerenciamento de desempenho de seus sites) para identificar o que está causando problemas no banco de dados.

A degradação gradual do desempenho é indicativa de um vazamento de memória no aplicativo - geralmente isso é causado por objetos que não são desreferenciados e, portanto, elegíveis para coleta de lixo - ou seja, um problema de programação. Isso deve ficar aparente na maioria das ferramentas de criação de perfil Java.

notei que há alguns tópicos aparecendo como monopolizadores

A menos que você esteja testando isso com uma carga de trabalho realista, os resultados serão praticamente inúteis.

informação relacionada