Linux系統性能監控

1.uptime 用法:java

  • 16:02:17  爲當前系統的時間
  • up 148 days,8:43 表示系統已運行148天8小時43分鐘
  • 1 user  表示用戶鏈接數爲1
  • load average: 0.99,0.99,1.00 表示系統平均負載 統計最近1,5 ,15分鐘的系統平均負載

注:load average的理想狀態是:內核數乘以0.5-0.7緩存

如:4核CPU的服務器,理想負載小於2 表示系統很閒  2-2.8 爲理想狀態   大於2.8系統比較繁忙服務器

2.TOP 用法:工具

統計信息區前五行爲系統總體的統計信息:spa

  • 第一行運行結果同 uptime進行結果相同
  • 第二行 Tasks: total-進程總數   running-正在運行的進程數 sleeping-睡眠的進程數 stopped-中止的進程數 zombile-殭屍進程數
  • 第三行 %Cpu(s): 12.5% us-用戶空間佔用CPU百分比 

                                87.5 id-空閒CPU百分比線程

  • 第四行 Mem: 16267180 total 表示物理內存總量

                           11166040 free 空閒內存總量3d

                           3041252 used -使用的物理內存總量orm

                           2059696 buff/cache -用做內核緩存的內存量對象

  • 第五行 SWAP 爲交換區信息                                      

可用內存的計算:totalfree=free+buff/cacheblog

3.JPS 用法:

   JPS可直接羅列出當前系統中的java進程

top -p 11468 直接查看此進行的相關信息

 

4.jstat 用法:用於輸出java程序內存使用狀況,包括新生代、老年代、元數據區容量、垃圾回收狀況

上述命令爲:輸出進程號爲11468的內存使用狀況(每2000ms輸出一次,一共輸出5次)

  • S0:倖存1區當前使用比例
  • S1:倖存2區當前使用比例
  • E:伊甸園區使用比例
  • O:老年代使用比例
  • M:元數據區使用比例
  • CCS:壓縮使用比例
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

5.jmap 用法:用於輸出java程序中內存對象的狀況,包括有哪些對象,對象的數量。

jmap -histo 11468

上述命令打印出進程ID爲11468的內存狀況。但咱們經常使用的方式是將指定進程的內存heap輸出到外部文件,再由專門的heap分析工具進行分析,例如mat(Memory Analysis Tool),因此咱們經常使用的命令是:

jmap -dump:live,format=b,file=heap.hprof 11468

6.jstack 查看線程信息

  jstack 10765  能夠打印出進程堆棧的堆棧信息

實戰實例:

  (一)當Linux系統CPU飆升時,找出系統中最耗CPU資線程

  • 找到最耗CPU的進程

       執行top -c ,顯示進程運行信息列表

       鍵入P (大寫p),進程按照CPU使用率排序

      

      注:這裏的cpu使用率是全部cpu使用率的總和,能夠在輸入top命令後,再輸入"1"查看各個CPU使用狀況,如:

      

      其中有一個cpu使用率一直是100%,這時應該懷疑程序有死循環的狀況。

  • 找到最耗CPU的線程

     top -Hp 23319 ,顯示一個進程的線程運行信息列表

     鍵入P (大寫p),線程按照CPU使用率排序

       

  • 將線程PID轉化爲16進制

    之因此要轉化爲16進制,是由於堆棧裏,線程id是用16進製表示的。

    

  • 查看堆棧,找到對應的線程

      ./jstack 23319 |grep 0x5bb6 -C 10 --color

  

  能夠看出線程一直運行在某個地方。

相關文章
相關標籤/搜索