Runtime

Como monitorar a performance das aplica��es Telescope/Eligo?

RT.FAQ-8233
Este procedimento que deve ser executado para tentar identificar a causa de problemas de performance.

Mem�ria, queries e locks

Acesse os dados de monitoramento atrav�s de URL
http://..../ELIGO/ctr/Notification/info
Veja como os itens:

Se valor de OLD estiver alto, recomenda-se uma an�lise dos objetos em mem�ria atrav�s de um dump da heap: Como obter e analisar o consumo de mem�ria em aplica��es Java?

Sess�es correntes

Tamb�m � possivel verificar o que cada usu�rio est� executando em um dado instante.
Para isso, acesse a tela
LstSessions

Logs da aplica��o

O monitoramento pode ser feito atrav�s da consulta aos logs do sistema. Em primeira inst�ncia, as queries SQL abaixo ir�o dar uma vis�o geral do comportamento da aplica��o nos �ltimos 30 minutos.
Se quiser aumentar este per�odo, basta alterar a express�o do primeiro comando "select".

select '30 minute' as tx;
let p=last;

select count(1) as Requisicoes
, round(avg(tempo)) as "Tempo m�dio (ms)"
, sum(tempo) as "Tempo total"
, round(sum(tempo)/extract(epoch FROM (interval '${p.tx}'))/10) as "% Tempo"
, round(count(1)/30) as "Requisi��es/min"
, count(distinct sessao_id) as "Sess�es"
, count(distinct usuario) as "Usu�rios"
from logs
where data_hora > (current_timestamp - interval '${p.tx}')
and tipo='REQUEST';

select ct as "Tempo da requisi��o", count(1), count(1)*100/${last.requisicoes} as "%"
from (
   select case 
   when tempo <= 100 then '0) 0 - 100ms'
   when tempo > 100 and tempo <= 500 then '1) 100ms - 500ms'
   when tempo > 500 and tempo <= 1000 then '2) 500ms - 1s'
   when tempo > 1000 and tempo <= 5000 then '3) 1s - 5s'
   else '4) > 5s' end as ct
   from logs
   where data_hora > (current_timestamp - interval '${p.tx}')
   and tipo='REQUEST'
) q
group by ct
order by ct;

select origem as "Tela de origem"
, count(1) as "Requisi��es"
, round(avg(tempo)) as "Tempo m�dio (ms)"
, min(tempo), max(tempo)
, sum(tempo) as "Custo total (ms)"
from logs
where data_hora > (current_timestamp - interval '${p.tx}')
and tipo = 'REQUEST'
group by tipo, origem
order by avg(tempo) desc;

select origem as "Tela de origem"
, count(1) as "Requisi��es"
, round(avg(tempo)) as "Tempo m�dio (ms)"
, min(tempo), max(tempo)
, sum(tempo) as "Custo total (ms)"
from logs
where data_hora > (current_timestamp - interval '${p.tx}')
and tipo = 'REQUEST'
group by tipo, origem
order by sum(tempo) desc;

A primeira parte d� um resumo dos �ltimos 30 minutos de uso do sistema.
A segunda parte, tabula as requisi��es conforme o tempo de execu��o. Espera-se que o maior n�mero de requisi��es se concentre nas faixas mais r�pidas de execu��o.
A terceira e quarta partes, apresenta as telas que est�o tem a m�dia mais alta e que est�o sendo mais "caras" para o sistema em termos de performance.

Observa��es


Uso de CPU no servidor

Verificar como est� o uso da CPU no servidor.
Em caso de Linux, � necess�rio ter acesso SSH ao servidor e executar o comando:
top
Em caso de Windows, pela aba "Processos" do Gerenciador de Tarefas (ordenar por CPU decrescente).

N�mero de requisi��es chegando ao servidor

No servidor, execute o comando abaixo. Este comando apresenta o n�mero de requisi��es que o tomcat est� respondendo a cada minuto.
grep "`date +%d/%b/%Y`" localhost_access_log.2014-03-18.txt|cut -d"[" -f2|cut -d":" -f1-3|uniq -c