1. 程式人生 > >解決Linux 負載過高問題過程記錄

解決Linux 負載過高問題過程記錄

解決問題的思路

1.top命令檢視該機器的負載狀況

2.cd  /proc/pid 檢視對應高佔用程式的位置

3.進入對應程式中檢視日誌,根據CPU和記憶體這兩個因素分析

4.ps -ajxf 檢視程序及其之下的執行緒,通過stat檢視是否存在D殭屍程序

1.什麼是負載過高

1.1load Average

1:load Average

   1.1:什麼是Load?什麼是Load Average?
   Load 就是對計算機幹活多少的度量(WikiPedia:the system Load is a measure of the amount of work that a compute system is doing)
   簡單的說是程序佇列的長度。Load Average 就是一段時間(1分鐘、5分鐘、15分鐘)內平均Load。【參考文章:unix Load Average Part1:How It Works】


1.2:如何判斷系統是否已經Over Load?
對一般的系統來說,根據cpu數量去判斷。如果平均負載始終在1.2一下,而你有2顆cup的機器。那麼基本不會出現cpu不夠用的情況。也就是Load平均要小於Cpu的數量
1.4:Load與容量規劃(Capacity Planning)
       一般是會根據15分鐘那個load 平均值為首先。

1.5:Load誤解:
1:系統load高一定是效能有問題。
    真相:Load高也許是因為在進行cpu密集型的計算
        2:系統Load高一定是CPU能力問題或數量不夠。
    真相:Load高只是代表需要執行的佇列累計過多了。但佇列中的任務實際可能是耗Cpu的,也可能是耗i/0及其他因素的。
3:系統長期Load高,首先增加CPU
    真相:Load只是表象,不是實質。增加CPU個別情況下會臨時看到Load下降,但治標不治本。

2:在Load average 高的情況下如何鑑別系統瓶頸。
   是CPU不足,還是io不夠快造成或是記憶體不足?

   2.1:檢視系統負載vmstat
Vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0

procs
r 列表示執行和等待cpu時間片的程序數,如果長期大於1,說明cpu不足,需要增加cpu。
b 列表示在等待資源的程序數,比如正在等待I/O、或者記憶體交換等。
cpu 表示cpu的使用狀態
us 列顯示了使用者方式下所花費 CPU 時間的百分比。us的值比較高時,說明使用者程序消耗的cpu時間多,但是如果長期大於50%,需要考慮優化使用者的程式。
sy 列顯示了核心程序所花費的cpu時間的百分比。這裡us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足。
wa 列顯示了IO等待所佔用的CPU時間的百分比。這裡wa的參考值為30%,如果wa超過30%,說明IO等待嚴重,這可能是磁碟大量隨機訪問造成的,也可能磁碟或者磁碟訪問控制器的頻寬瓶頸造成的(主要是塊操作)。
id 列顯示了cpu處在空閒狀態的時間百分比
system 顯示採集間隔內發生的中斷數
in 列表示在某一時間間隔中觀測到的每秒裝置中斷數。
cs列表示每秒產生的上下文切換次數,如當 cs 比磁碟 I/O 和網路資訊包速率高得多,都應進行進一步調查。
memory
swpd 切換到記憶體交換區的記憶體數量(k表示)。如果swpd的值不為0,或者比較大,比如超過了100m,只要si、so的值長期為0,系統性能還是正常
free 當前的空閒頁面列表中記憶體數量(k表示)
buff 作為buffer cache的記憶體數量,一般對塊裝置的讀寫才需要緩衝。
cache: 作為page cache的記憶體數量,一般作為檔案系統的cache,如果cache較大,說明用到cache的檔案較多,如果此時IO中bi比較小,說明檔案系統效率比較好。
swap
si 由記憶體進入記憶體交換區數量。
so由記憶體交換區進入記憶體數量。
IO
bi 從塊裝置讀入資料的總量(讀磁碟)(每秒kb)。
bo 塊裝置寫入資料的總量(寫磁碟)(每秒kb)
這裡我們設定的bi+bo參考值為1000,如果超過1000,而且wa值較大應該考慮均衡磁碟負載,可以結合iostat輸出來分析。

   2.2:檢視磁碟負載iostat
每隔2秒統計一次磁碟IO資訊,直到按Ctrl+C終止程式,-d 選項表示統計磁碟資訊, -k 表示以每秒KB的形式顯示,-t 要求打印出時間資訊,2 表示每隔 2 秒輸出一次。第一次輸出的磁碟IO負載狀況提供了關於自從系統啟動以來的統計資訊。隨後的每一次輸出則是每個間隔之間的平均IO負載狀況。

# iostat -x 1 10
Linux 2.6.18-92.el5xen 02/03/2009
avg-cpu:   %user %nice %system %iowait   %steal %idle
            1.10 0.00 4.82 39.54 0.07 54.46
Device:       rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await   svctm   %util
   sda             0.00     3.50   0.40   2.50     5.60 48.00 18.48     0.00 0.97 0.97 0.28
   sdb             0.00     0.00   0.00   0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
   sdc             0.00     0.00   0.00   0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
   sdd             0.00     0.00   0.00   0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
   sde             0.00     0.10   0.30   0.20     2.40     2.40     9.60     0.00 1.60 1.60 0.08
   sdf              17.40     0.50 102.00   0.20 12095.20     5.60 118.40     0.70 6.81 2.09   21.36
   sdg          232.40     1.90 379.70   0.50 76451.20 19.20 201.13     4.94 13.78 2.45   93.16
   rrqm/s: 每秒進行 merge 的讀運算元目。即 delta(rmerge)/s
   wrqm/s:   每秒進行 merge 的寫運算元目。即 delta(wmerge)/s
   r/s:           每秒完成的讀 I/O 裝置次數。即 delta(rio)/s
   w/s:       每秒完成的寫 I/O 裝置次數。即 delta(wio)/s
   rsec/s: 每秒讀扇區數。即 delta(rsect)/s
   wsec/s: 每秒寫扇區數。即 delta(wsect)/s
   rkB/s:   每秒讀K位元組數。是 rsect/s 的一半,因為每扇區大小為512位元組。(需要計算)
   wkB/s: 每秒寫K位元組數。是 wsect/s 的一半。(需要計算)
   avgrq-sz: 平均每次裝置I/O操作的資料大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)
   avgqu-sz: 平均I/O佇列長度。即 delta(aveq)/s/1000 (因為aveq的單位為毫秒)。
   await: 平均每次裝置I/O操作的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
   svctm: 平均每次裝置I/O操作的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)
   %util:    一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 佇列是非空的。即 delta(use)/s/1000 (因為use的單位為毫秒)
  
   如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁碟
   可能存在瓶頸。
   idle小於70% IO壓力就較大了,一般讀取速度有較多的wait.
  
   同時可以結合vmstat 檢視檢視b引數(等待資源的程序數)和wa引數(IO等待所佔用的CPU時間的百分比,高過30%時IO壓力高)
  
   另外還可以參考
   一般:
   svctm < await (因為同時等待的請求的等待時間被重複計算了),
   svctm的大小一般和磁碟效能有關:CPU/記憶體的負荷也會對其有影響,請求過多也會間接導致 svctm 的增加。
   await: await的大小一般取決於服務時間(svctm) 以及 I/O 佇列的長度和 I/O 請求的發出模式。
   如果 svctm 比較接近 await,說明I/O 幾乎沒有等待時間;
   如果 await 遠大於 svctm,說明 I/O佇列太長,應用得到的響應時間變慢,
   如果響應時間超過了使用者可以容許的範圍,這時可以考慮更換更快的磁碟,調整核心 elevator演算法,優化應用,或者升級 CPU。
   佇列長度(avgqu-sz)也可作為衡量系統 I/O 負荷的指標,但由於 avgqu-sz 是按照單位時間的平均值,所以不能反映瞬間的 I/O 洪水。
  
     別人一個不錯的例子.(I/O 系統 vs. 超市排隊)
   舉一個例子,我們在超市排隊 checkout 時,怎麼決定該去哪個交款臺呢? 首當是看排的隊人數,5個人總比20人要快吧?除了數人頭,我們也常常看看前面人購買的東西多少,如果前面有個採購了一星期食品的大媽,那麼可以考慮換個隊排了。還有就是收銀員的速度了,如果碰上了連錢都點不清楚的新手,那就有的等了。另外,時機也很重要,可能 5分鐘前還人滿為患的收款臺,現在已是人去樓空,這時候交款可是很爽啊,當然,前提是那過去的 5 分鐘裡所做的事情比排隊要有意義(不過我還沒發現什麼事情比排隊還無聊的)。
   I/O 系統也和超市排隊有很多類似之處:
   r/s+w/s 類似於交款人的總數
   平均佇列長度(avgqu-sz)類似於單位時間裡平均排隊人的個數
   平均服務時間(svctm)類似於收銀員的收款速度
   平均等待時間(await)類似於平均每人的等待時間
   平均I/O資料(avgrq-sz)類似於平均每人所買的東西多少
   I/O 操作率 (%util)類似於收款臺前有人排隊的時間比例。
   我們可以根據這些資料分析出 I/O 請求的模式,以及 I/O 的速度和響應時間。
   下面是別人寫的這個引數輸出的分析
   # iostat -x 1
   avg-cpu:   %user %nice %sys %idle
   16.24 0.00 4.31 79.44
   Device: rrqm/s wrqm/s r/s w/s   rsec/s   wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await   svctm   %util
   /dev/cciss/c0d0
   0.00   44.90   1.02 27.55 8.16   579.59     4.08 289.80 20.57 22.35 78.21 5.00   14.29
   /dev/cciss/c0d0p1
   0.00   44.90   1.02 27.55 8.16   579.59     4.08 289.80 20.57 22.35 78.21 5.00   14.29
   /dev/cciss/c0d0p2
   0.00 0.00   0.00   0.00 0.00 0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
   上面的 iostat 輸出表明秒有 28.57 次裝置 I/O 操作: 總IO(io)/s = r/s(讀) +w/s(寫) = 1.02+27.55 = 28.57 (次/秒) 其中寫操作佔了主體 (w:r = 27:1)。
   平均每次裝置 I/O 操作只需要 5ms 就可以完成,但每個 I/O 請求卻需要等上 78ms,為什麼? 因為發出的 I/O 請求太多 (每秒鐘約 29 個),假設這些請求是同時發出的,那麼平均等待時間可以這樣計算:
   平均等待時間 = 單個 I/O 服務時間 * ( 1 + 2 + ... + 請求總數-1) / 請求總數
   應用到上面的例子: 平均等待時間 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 給出的78ms 的平均等待時間很接近。這反過來表明 I/O 是同時發起的。
   每秒發出的 I/O 請求很多 (約 29 個),平均佇列卻不長 (只有 2 個 左右),這表明這 29 個請求的到來並不均勻,大部分時間 I/O 是空閒的。
   一秒中有 14.29% 的時間 I/O 佇列中是有請求的,也就是說,85.71% 的時間裡 I/O 系統無事可做,所有 29 個 I/O 請求都在142毫秒之內處理掉了。
   delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s=78.21 * delta(io)/s = 78.21*28.57 =2232.8,表明每秒內的I/O請求總共需要等待2232.8ms。所以平均佇列長度應為 2232.8ms/1000ms = 2.23,而iostat 給出的平均佇列長度 (avgqu-sz) 卻為 22.35,為什麼?! 因為 iostat 中有 bug,avgqu-sz值應為 2.23,而不是 22.35。

什麼是cpu load 值

top命令中顯示的load average即為最近1分鐘、5分鐘和15分鐘的系統平均負載。 
這裡寫圖片描述

系統平均負載被定義為在特定時間間隔內執行佇列中(在CPU上執行或者等待執行多少程序)的平均程序數。如果一個程序滿足以下條件則其就會位於執行佇列中:

  • 它沒有在等待I/O操作的結果
  • 它沒有主動進入等待狀態(也就是沒有呼叫’wait’)
  • 沒有被停止(例如:等待終止)

在Linux中,程序分為三種狀態,一種是阻塞的程序blocked process(等待I/O裝置的資料或者系統調),一種是可執行的程序runnable process,另外就是正在執行的程序running process。

程序可執行狀態時,它處在一個執行佇列run queue中,與其他可執行程序爭奪CPU時間。 系統的load是指正在執行和準備好執行的程序的總數。比如現在系統有2個正在執行的程序,3個可執行程序,那麼系統的load就是5。load average就是一定時間內的load數量。

什麼因素構成了cpu load的大小

衡量CPU 系統負載的指標是load,load 就是對計算機系統能夠承擔的多少負載的度量,簡單的說是程序佇列的長度。請求大於當前的處理能力,會出現等待,引起load升高。 
對於本文剛剛開頭顯示的 load average 0.21 0.10 0.03

很多人會這樣理解負載均值:三個數分別代表不同時間段的系統平均負載(一分鐘、五 分鐘、以及十五分鐘),它們的數字當然是越小越好。數字越高,說明伺服器的負載越大,這也可能是伺服器出現某種問題的訊號。而事實不完全如此,是什麼因素構成了負載均值的大小,以及如何區分它們目前的狀況是 “好”還是“糟糕”?什麼時候應該注意哪些不正常的數值?

回答這些問題之前,首先需要了解下這些數值背後的些知識。我們先用最簡單的例子說明, 一臺只配備一塊單核處理器的伺服器。

行車過橋

  一隻單核的處理器可以形象得比喻成一條單車道。設想下,你現在需要收取這條道路的過橋費 — 忙於處理那些將要過橋的車輛。你首先當然需要了解些資訊,例如車輛的載重、以及 還有多少車輛正在等待過橋。如果前面沒有車輛在等待,那麼你可以告訴後面的司機通過。 如果車輛眾多,那麼需要告知他們可能需要稍等一會。

  因此,需要些特定的代號表示目前的車流情況,例如:

  0.00 表示目前橋面上沒有任何的車流。 實際上這種情況與 0.00 和 1.00 之間是相同的,總而言之很通暢,過往的車輛可以絲毫不用等待的通過。

  1.00 表示剛好是在這座橋的承受範圍內。 這種情況不算糟糕,只是車流會有些堵,不過這種情況可能會造成交通越來越慢。 
   
  超過 1.00,那麼說明這座橋已經超出負荷,交通嚴重的擁堵。 那麼情況有多糟糕? 例如 2.00 的情況說明車流已經超出了橋所能承受的一倍,那麼將有多餘過橋一倍的車輛正在焦急的等待。3.00 的話情況就更不妙了,說明這座橋基本上已經快承受不了,還有超出橋負載兩倍多的車輛正在等待。 
  上面的情況和處理器的負載情況非常相似。一輛汽車的過橋時間就好比是處理器處理某執行緒 的實際時間。Unix 系統定義的程序執行時長為所有處理器核心的處理時間加上執行緒在佇列中等待的時間。

  和收過橋費的管理員一樣,你當然希望你的汽車(操作)不會被焦急的等待。所以,理想狀態 下,都希望負載平均值小於 1.00 。當然不排除部分峰值會超過 1.00,但長此以往保持這 個狀態,就說明會有問題,這時候你應該會很焦急。 
“所以你說的理想負荷為 1.00 ?”嗯,這種情況其實並不完全正確。負荷 1.00 說明系統已經沒有剩餘的資源了。在實際情況中 ,有經驗的系統管理員都會將這條線劃在 0.70。如果長期你的系統負載在 0.70 上下,那麼你需要在事情變得更糟糕之前,花些時間瞭解其原因。

多核處理器: 系統還是以處理器的核心數量計算負載均值 
在多核處理中,你的系統均值不應該高於處理器核心的總數量。繼續針對上述的汽車過橋問題,如果是雙核CPU,那麼負載在2.0才是負載滿額。如下是對於雙核處理器的輸出

uptime
17:57  up 22 days,  8:29, 3 users, load averages: 2.04 2.04 2.01
  • 1
  • 2

cpu load 過高原因以及排查

造成cpu load過高的原因.從程式語言層次上full gc次數的增大或死迴圈都有可能造成cpu load 增高

具體的排查一句話描述就是

2.如何檢視負載過高

2.1top命令含義解釋

Linux系統可以通過top命令檢視系統的CPU、記憶體、執行時間、交換分割槽、執行的執行緒等資訊。通過top命令可以有效的發現系統的缺陷出在哪裡。是記憶體不夠、CPU處理能力不夠、IO讀寫過高。

0 綜述 使用SSHClient客戶端連線到遠端Linux系統。使用top命令檢視系統的當前執行的情況。如圖對top命令執行的結果做了簡單的圖解,下面針對每一項做詳細的解釋。

1 top命令的第一行“top - 19:56:47 up 39 min,  3 users,  load average: 0.00, 0.00, 0.00”顯示的內容依次為“系統當前時間 、系統到目前為止已執行的時間、當前登入系統的使用者數量、系統負載(任務佇列的平均長度)三個值分別為1分鐘、5分鐘、15分鐘前到現在的平均值【這三個一般會小於1,如果持續高於5,請仔細檢視那個程式影響系統的執行】”

2 top命令的第二行“Tasks: 120 total,   2 running, 118 sleeping,   0 stopped,   0 zombie”顯示的內容依次“所有啟動的程序數”、“正在執行的程序數”、“掛起的程序數”、“停止的程序數”、“殭屍程序數”。

3 top命令的第三行“Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st”顯示的內容依次為“使用者空間佔用CPU百分比”、“核心空間佔用CPU百分比”、“使用者空間內改變過優先順序的程序佔用CPU百分比”、“空閒CPU百分比”、“等待輸入輸出CPU時間百分比”、“CPU服務於硬體中斷所耗費的時間總額”、“CPU服務軟中斷所耗費的時間總額”、“Steal Time”

4 top命令第四行“Mem:    508820k total,   480172k used,    28648k free,    41944k buffers”顯示內容依次為“實體記憶體總量”、“已使用的實體記憶體”、“空閒實體記憶體”、“核心快取記憶體量”。

5 top命令第5行“Swap:   392184k total,        0k used,   392184k free,   259152k cached”顯示內容依次為“交換區總量”、“已使用互動區總量”、“空閒交換區總量”、“緩衝的交換區總量”。

6 top命令第5行“PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND ”顯示內容依次為“程序ID”、“程序所有者”、“優先順序”、“nice值,負值表示高優先順序,正值表示低優先順序”、“程序使用的虛擬記憶體總量”、“程序使用的、未被換出的實體記憶體大小”、“共享記憶體大小”、“程序狀態”、“上次更新到現在的CPU時間佔用百分比”、“程序使用的實體記憶體百分比”、“程序使用CPU總時間”、“命令名、命令列”。

1.2:檢視指令:


   w or uptime or procinfo or top
   load average: 0.02,   0.27,    0.17
   1 per/minute 5 per/minute 15 per/minute

3.發現負載過高的問題

4.解決負載過高的問題

相關推薦

解決Linux 負載問題過程記錄

解決問題的思路 1.top命令檢視該機器的負載狀況 2.cd  /proc/pid 檢視對應高佔用程式的位置 3.進入對應程式中檢視日誌,根據CPU和記憶體這兩個因素分析 4.ps -ajxf 檢視程序及其之下的執行緒,通過stat檢視是否存在D殭屍程序

Linux磁碟滿了以及負載解決辦法

原文地址:http://blog.csdn.net/zheshijieyouwo/article/details/769448451. 磁碟滿了如果一臺機器磁碟滿了,首先我們需要確定其位置,命令為 df(或者df -h) //顯示結果 Filesystem 512-bl

linux 排查cpu負載異常

問:如何定位是哪個服務程序導致CPU過載,哪個執行緒導致CPU過載,哪段程式碼導致CPU過載? 步驟一、找到最耗CPU的程序 工具:top 方法: 執行top -c ,顯示程序執行資訊列表 鍵入P (大寫p),程序按照CPU使用率排序 圖示: 如上圖,最耗CPU的程序P

centos使用寶塔linux面板搭建zabbix過程記錄

configure ping 解壓 art mct size title root 個數 發表聲明:本文章參照了https://lala.im/2733.html中的步驟和加入自己的安裝步驟圖而成,不喜勿噴。1、使用鏡像名稱為鏡像名稱:CentOS-7-x86_64-DVD

CPU負載異常排查實踐與總結

昨天下午突然收到運維郵件報警,顯示資料平臺伺服器cpu利用率達到了98.94%,而且最近一段時間一直持續在70%以上,看起來像是硬體資源到瓶頸需要擴容了,但仔細思考就會發現咱們的業務系統並不是一個高併發或者CPU密集型的應用,這個利用率有點太誇張,硬體瓶頸應該不會這麼快就到了,一定是哪裡的業務程式碼邏輯有問題

解決mysql版本導致group by的問題

執行如下兩條sql語句 set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';s

伺服器CPU負載,如何定位問題

CPU負載過高解決問題過程: 1,根據top命令,發現PID為12433的Java程序佔用CPU高達300%,出現故障。 2,找到該程序後,如何定位具體執行緒或程式碼呢,首先顯示執行緒列表,並按照CPU佔用高的執行緒排序: [[email protected] logs]# ps -mp  1243

伺服器cpu負載問題排查

第一步 :執行top命令,查出當前機器執行緒情況 top - 09:14:36 up 146 days, 20:24, 1 user, load average: 0.31, 0.37, 0.45 Tasks: 338 total, 1 running

------------解決 svchost 佔用及磁碟最長活時間問題------win---------

原因分析: 先說說什麼是svchost.exe:簡單的說沒有這個RPC服務,機器幾乎就上不了網了。很多應用服務都是依賴於這個RPC介面的,如果發現這個程序佔了太多的CPU資源,直接把系統的RPC服務禁用了會是一場災難:因為連恢復這個介面的系統服務設定介面都無法使用了。恢復的方法需要使用登錄檔編輯器,找到 H

一次線上機器load負載報警問題排查及其後續處理

問題來源:從3.14號開始陸續收到線上一臺機器的負載過高報警 問題排查 : 於是對gc、堆記憶體、load負載、cpu使用情況等進行了統計分析。 gc時間圖示 堆記憶體使用情況: load負載 cpu使用率 通過以上對gc的統計,

效能測試必備知識(4)- 使用 stress 和 sysstat 分析平均負載的場景

做效能測試的必備知識系列,可以看下面連結的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html   stress 介紹 Linux 系統壓力測試工具,這裡通過異常程序模擬平均負載升高的場景   來看看 stress 命令列引數的講

Linux中Cache內存占用解決辦法

格式化 left ack 當前 區別 專業 技術分享 表示 進行 在Linux系統中,我們經常用free命令來查看系統內存的使用狀態。在一個RHEL6的系統上,free命令的顯示內容大概是這樣一個狀態: 這裏的默認顯示單位是kb,我的服務器是128G內存,所以數字顯得

iowait 問題的查找及解決linux

可能 cap 都是 二次 vdi bcrypt svc ips pin Linux 有許多可用來查找問題的簡單工具,也有許多是更高級的 I/O Wait 就是一個需要使用高級的工具來debug的問題,當然也有許多基本工具的高級用法。I/O wait的問題難以定位的原因是因為

一次JVM_OLD區佔用、頻繁Full GC的解決過程

最近,公司網站頻繁報警,JVM_OLD佔用過高,線上訪問超時嚴重,針對這個問題著實頭疼了一把,不過最終還是解決了,下面說下解決的過程。 1,首先 登到線上機器上去,top命令,檢視當前機器的負載,檢視當前哪個程序在消耗資源。 Shell 1

解決Linux buffer/cache記憶體佔用的辦法

-------原文地址 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html --------本文只是搬運 在Linux系統中,我們經常用free命令來檢視系統記憶體的使用狀態。在一個RHEL6的系統上,fr

ORACLE 11g 通過ASH結合AWR實戰解決cpu負載的詳細過程

select * from ( select this_.dly_note_id as dly1_396_0_, this_.created_center_cd as created2_396_0_, this_.created_date as created3_396_0_, this_.created

Linux中buff/cache記憶體佔用解決辦法

如何回收cache? Linux核心會在記憶體將要耗盡的時候,觸發記憶體回收的工作,以便釋放出記憶體給急需記憶體的程序使用。一般情況下,這個操作中主要的記憶體釋放都來自於對buffer/cache的釋放。尤其是被使用更多的cache空間。既然它主要用來做快

Linux中Cache記憶體佔用解決辦法

在Linux系統中,我們經常用free命令來檢視系統記憶體的使用狀態。在一個RHEL6的系統上,free命令的顯示內容大概是這樣一個狀態: 這裡的預設顯示單位是kb,我的伺服器是128G記憶體,所以數字顯得比較大。這個命令幾乎是每一個使用過Linux的人必會的命令,但越是這樣的命令,似乎真正明白的人越少(

解決linux buffer/cache 消耗記憶體引發的問題

工作中接到DBA報障某臺伺服器 跑一些大的資料,伺服器就無法遠端連線,報錯,抓過日誌叫DELL工程師檢測也沒問題,系統也重灌過,現在些一些較大的資料就會報如 圖錯誤,由於伺服器遠在異地城市IDC機房,ssh也無法登入,於是使用iDRAC 遠端管理卡連線到該臺機器,通過控制檯連線到伺服器,看到如下圖報錯:

java問題導致linux負載、cpu如何定位

1.用top找到最耗資源的程序id [[email protected] bin]# top top - 16:56:14 up 119 days,  6:17,  7 users,  load average: 2.04, 2.07, 2.09 Tasks: 2