持續剖析可以有效發現Golang程式中因為CPU、記憶體和IO導致的瓶頸問題,並且按照方法名稱、類名稱和行號進行細分統計,最終協助開發人員最佳化程式、降低延遲、增加輸送量、節約成本。本文介紹如何開啟ARMS Golang應用的持續剖析功能以及如何查看持續剖析資料。
前提條件
請先接入ARMS應用監控,並且將Golang Agent版本更新至1.3.0或以上版本,您可以在頁面查看探針版本號碼。
開啟持續剖析功能
登入ARMS控制台,在左側導覽列選擇。
在應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明語言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。-:接入Managed Service for OpenTelemetry的應用。
在上方導覽列選擇。
在持久性能剖析地區開啟總開關,並根據需要開啟其他功能開關。

單擊儲存,等待2分鐘左右生效。
查看持續剖析資料
登入ARMS控制台,在左側導覽列選擇。
在應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明語言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。-:接入Managed Service for OpenTelemetry的應用。
在上方導覽列選擇。
在左側執行個體列表中選擇目標執行個體,然後在右側版面設定資料展示時間。
在右側查詢頁簽,您可以執行以下操作篩選資料並查看彙總分析。

在時間視窗大小地區(圖示①)選擇快照時間大小,然後在曲線圖上通過滑鼠拖拽選擇快照時間範圍。
在圖示②的下拉框可以選擇資料類型:cpu、go heap、goroutine、mutex、block。
在圖示③地區顯示了快照時間範圍內的資料列表,單擊右上方的彙總分析可以查看快照詳情。
效能分析
CPU Time:CPU申請量熱點剖析資料。

Allocated Memory:記憶體申請量熱點剖析資料。

Allocations:記憶體申請次數熱點剖析資料,可以查看哪些方法申請記憶體次數頻繁。

goroutine:

mutex(互斥分析)
mutexContentions:

mutexDelay:

block(阻塞分析)
blockContentions:

blockDelay:

說明Self列表示方法在自身的調用棧中所消耗的時間或資源,不包括其子方法調用所消耗的時間或資源。可以用於識別哪些方法在自身內部花費了大量的時間或資源。
Total列包含方法自身消耗的時間或資源,及其所有子方法調用所消耗的時間或資源。可以協助瞭解整個方法調用棧中哪些方法貢獻了最多的時間或資源。
如需排查具體的熱點代碼邏輯,可以通過重點關注Self列或直接查看右側火焰圖中底部的較寬火苗從中定位到高耗時的業務方法,較寬火苗是引發上層耗時高的根源,一般是系統效能的瓶頸所在,您可以重點關注。
快照列表

相關文檔
您可以使用持續剖析功能排查CPU和記憶體使用量率較高的問題,具體操作如下: