Buscando consumidor de CPU

Detectando consumoOlá seguidor, amigo, leitor, colega de trabalho! Bom dia! Boa tarde! Boa noite!!!

Bem depois que fiz o post sobre caçada de Pokémons, achei muito interessante a quantidade de manifestações que recebi por email. Uns contra, outros a favor, mas muita gente mesmo. He he he sinal de que o post foi lido e que o site está cada vez mais conhecido. Então só tenho a agradecer a todos que de uma forma ou de outra participaram, até um que me chamou de DBA louco.. hahahaha e quem não é?

Bem, mas hoje vou comentar a respeito de um item bastante interessante, o consumo de CPU.
Já havia comentado em um post anterior sobre o consumo de CPU, e como já havia falado anteriormente, dizer que está consumindo CPU nem sempre é problema. Ele pode sim se tornar um problema se o hardware começar a “abrir o bico”. Nunca ouviu falar este termo?? Hehehe a gente usa ele para dizer que algo está sofrendo, penando.

Pois é, caso o seu hardware comece a não corresponder e você precise saber qual ou quais sessões estão consumindo mais CPU, trouxe hoje uma query bem interessante nas versões single e RAC que poderão te ajudar a descobrir os maiores consumidores de CPU.

SELECT s.sid, s.serial#, p.spid as “OS PID”,s.username, s.module, st.value/100 as “CPU sec”
FROM v$sesstat st, v$statname sn, v$session s, v$process p
WHERE sn.name = ‘CPU used by this session’ — CPU
AND st.statistic# = sn.statistic#
AND st.sid = s.sid
AND s.paddr = p.addr
AND s.last_call_et < 1800 —ativas nos últimos 30 minutos (em segundos)
AND s.logon_time > (SYSDATE – 240/1440) —sessões logadas a mais de 4 horas
ORDER BY st.value desc;

— para RAC

SELECT s.inst_id, s.sid, s.serial#, p.spid as “OS PID”,s.username, s.module, st.value/100 as “CPU sec”
FROM gv$sesstat st, gv$statname sn, gv$session s, gv$process p
WHERE sn.name = ‘CPU used by this session’ — CPU
AND st.statistic# = sn.statistic#
AND st.sid = s.sid
AND s.paddr = p.addr
and s.inst_id = st.inst_id
and st.inst_id = p.inst_id
and s.inst_id = sn.inst_id
AND s.last_call_et < 1800 — ativas nos últimos 30 minutos (em segundos)
AND s.logon_time > (SYSDATE – 240/1440) — sessões logadas a mais de 4 horas
ORDER BY st.value desc;

Esta query trará diversas informações das sessões que estão consumindo mais CPU.
Combinada com o comando top ou topas(AIX) do sistema operacional poderão te ajudar a detectar e até quem sabe derrubar consumidores excessivos de CPU.

Espero que tenham curtido, que seja útil e que possa ajudar.

Grande abraço a todos! Foco grande na Meta seja ela qual for!!

Sobre raul andrade

DBA e Instrutor Oracle, apaixonado pela minha família e por ensinar.
Esta entrada foi publicada em DBA Oracle e marcada com a tag , , , , . Adicione o link permanente aos seus favoritos.

Deixe uma resposta