1. 程式人生 > 實用技巧 >mysql服務的安裝和資料庫和表的管理以及許可權管理

mysql服務的安裝和資料庫和表的管理以及許可權管理

故障:最近收到生產伺服器的報警簡訊以及郵件,報警內容為:記憶體使用率高於70%。


  1. 使用top命令檢視系統資源的使用情況,命令:top


    blob.png



    如圖可以看到java的程序記憶體使用率較高,java程序的記憶體使用率達到了70%+



2.定位執行緒問題(通過命令檢視9718程序的執行緒情況),命令:ps p 9718 -L -o pcpu,pmem,pid,tid,time,tname,cmd

blob.png

由此可以看到這PID:9718的程序產生了很多執行緒。接下來就可以通過jstack檢視記憶體使用的堆疊。


3. 檢視記憶體使用的堆疊:在這裡我們挑選了TID=9720的執行緒進行分析,首先需要將9731這個id轉換為16進位制。需輸入如下命令,

printf "%x\n" 9731


blob.png

接下需要使用16進位制的2603


4. 將PID為9718的堆疊資訊列印到jstack.log中,命令:jstack -l 9718 > jstack.log


blob.png


5. 檢視堆疊資訊檔案,命令:vim jstack.log


在進行搜尋TID為2603的相關資訊。如圖:

blob.png

可以看到這個執行緒狀態為:WAITING。通過檢視檔案分析看到大量Java Thread State。

說明它在等待另一個條件的發生,來把自己喚醒,或者乾脆它是呼叫了 sleep(N)。

此時執行緒狀態大致為以下幾種:

java.lang.Thread.State:WAITING(parking):一直等那個條件發生;

java.lang.Thread.State:TIMED_WAITING(parking或sleeping):定時的,那個條件不到來,也將定時喚醒自己。


6.程式碼優化:將檔案傳送給開發。優化下執行緒


本文轉載於https://blog.51cto.com/chengxiaobai/2052530?cid=695076


轉載於:https://blog.51cto.com/bosszhang/2085994