診斷和解決CPU利用率過高的解決經歷

2021-08-22 11:03:43 字數 1123 閱讀 4778

相信熟悉oracle的人經常會碰到一下幾個問題:

1. cpu利用率過高

2. 磁碟爭搶平凡(io過高)

3. 執行儲存過程中遇到和預計的時間相差很懸殊

以上這幾個問題非常棘手,特別是第三點,特別是在金融行業,交易系統一般需要在晚上非交易時間內計算完龐大的資料,否則就會影響到第二天的交易

針對以上幾個問題,我來講一下在一起專案中碰到過的一次procedure的經歷

作業系統:red hat linux 9

數 據 庫:oracle 9.2.0.4

問題描述:原本計算在30分鐘執行完的procedure,居然跑了2個半小時,而且明顯cpu過高

首先我們通過檢視alert*.log,並沒有在執行過程當中出現任何的警告和錯誤資訊

那麼我們就要檢視一下sql到底在做些什麼事情,查詢sql如下所示:

select sql_text,spid,b.program,process

from v$sqlarea a,

v$session b,

v$process d

where a.address = b.sql_address

and a.hash_value = b.sql_hash_value

and b.paddr = d.addr

and d.spid in (程序id);

程序id我們可以通過top命令檢視到

得出有一條sql語句在執行中竟然耗費了將近1.5小時的時間,並且cpu占用的非常大

所以基本上可以斷定是這條sql語句造成的,所以我們可以通過以下2個方面來進行處理:

首先我們通過檢視v$session_wait來檢視佇列,sql如下:

sql>select sid,event,p1,p1text from v$session_wait

通過檢視,大多都屬於latch free狀態,那麼我們就查一下是什麼原因產生了latch free狀態,sql如下:

sql>select spid from v$process where addr in (select paddr from v$session where sid in(.........));

Linux下CPU的利用率

cpu利用率是對系統進行效能分析的重要因素,本文將說明cpu時間的組成以及利用率的計算方法。核心中的時間 具體說明cpu的各種時間之前,先說明核心中幾個重要的時間概念。hz是系統時鐘在一秒內固定發出時鐘中斷的次數。hz在編譯核心前是可以進行配置的,因此通過下述命令就可以檢視當前系統的時鐘中斷頻率 1...

關於 CPU 利用率的思考

在作業系統 計算機組成原理等計算機相關書中經常會看到諸如 盡可能使cpu保持 忙 提高cpu利用率 等語句。但是當點開 windows 的任務管理器觀察到 cpu 利用率過高,計算機會出現卡頓。一般 cpu 利用率達到 100 時還有可能造成宕機。這不是構成矛盾了嗎?cpu 的利用率越高越好還是越低...

Linux系統中的CPU利用率

設前一次cpu執行的總時間長期為jiffies pr,當前cpu執行總時間為jiffies cur,前一次監控使用者進行程占用的時間為jiffies user pr,當前使用者程序占用時間為jiffies user cur,則 pe rcen br br jif fies use r cu r ji...