cpu低而負載高也就是說等待磁碟i/o完成的程序過多,就會導致佇列長度過大,這樣就體現到負載過大了,但實際是此時cpu被分配去執行別的任務或空閒,具體場景有如下幾種。
場景一:磁碟讀寫請求過多就會導致大量i/o等待
上面說過,cpu的工作效率要高於磁碟,而程序在cpu上面執行需要訪問磁碟檔案,這個時候cpu會向核心發起呼叫檔案的請求,讓核心去磁碟取檔案,這個時候會切換到其他程序或者空閒,這個任務就會轉換為不可中斷睡眠狀態。當這種讀寫請求過多就會導致不可中斷睡眠狀態的程序過多,從而導致負載高,cpu低的情況。
場景二:mysql中存在沒有索引的語句或存在死鎖等情況
我們都知道mysql的資料是儲存在硬碟中,如果需要進行sql查詢,需要先把資料從磁碟載入到記憶體中。當在資料特別大的時候,如果執行的sql語句沒有索引,就會造成掃瞄表的行數過大導致i/o阻塞,或者是語句中存在死鎖,也會造成i/o阻塞,從而導致不可中斷睡眠程序過多,導致負載過大。
具體解決方法可以在mysql中執行show full processlist命令檢視執行緒等待情況,把其中的語句拿出來進行優化。
場景三:外接硬碟故障,常見有掛了nfs,但是nfs server故障
比如我們的系統掛載了外接硬碟如nfs共享儲存,經常會有大量的讀寫請求去訪問nfs儲存的檔案,如果這個時候nfs server故障,那麼就會導致程序讀寫請求一直獲取不到資源,從而程序一直是不可中斷狀態,造成負載很高。
詳解Linux CPU負載和CPU使用率
cpu負載和 cpu使用率 這兩個從一定程度上都可以反映一台機器的繁忙程度.cpu使用率反映的是當前cpu的繁忙程度,忽高忽低的原因在於占用cpu處理時間的程序可能處於io等待狀態但卻還未釋放進入wait。平均負載 load erage 是指某段時間內占用cpu時間的程序和等待cpu時間的程序數,這...
控制CPU使用率
我使用的是ubuntu 14.04版本,用的是自帶的系統監視器來觀察cpu使用率的變化。1.首先來說說怎麼控制cpu使用率,當程式執行乙個死迴圈的時候,使用率就會變成100 而當程式進入idle的時候,使用率就會很低 在別的程式不啟動的情況下 那麼控制cpu使用率就是調整它idle和busy的時間比...
cpu使用率統計
cat proc stat得到 user nice system idle iowait irq softirq stealstolen guest 的9元組 再採兩個夠短的時間點,做差計算即可 cat proc pid stat讀取到 pid 6873 程序號utime 1587 該任務在使用者態...