profiler
基於 go pprof
與 go trace
持續效能剖析工具
- 根據配置檔案收集目標服務的樣本, 收集程式會監聽配置檔案的變化,即時應用變化後的配置檔案
- 支援的樣本
trace
fgprof
profile
mutex
heap
goroutine
allocs
block
threadcreate
- 提供
chart
觀測服務效能指標的趨勢,找出效能問題的時間點 - 點選
chart
中的氣泡跳轉到pprof
與trace
的詳細頁面進行進一步詳細的分析
pprof chart | 點選氣泡跳轉pprof詳情 |
點選氣泡跳轉trace詳情 | 點選氣泡跳轉trace詳情 |
快速入門
本地啟動
# run server :8080
go run server/main.go
# run ui :80
cd ui && npm install --registry=https://registry.npm.taobao.org && npm run dev --base_api_url=http://localhost:8080
In Docker
# 無持久化
docker run -d -p 80:80 --name profiler xyctruth/profiler:latest
# 持久化
mkdir -vp ~/profiler/config/
cp ./collector.yaml ~/profiler/config/
docker run -d -p 80:80 -v ~/profiler/data/:/profiler/data/ -v ~/profiler/config/:/profiler/config/ --name profiler xyctruth/profiler:latest
抓取配置
需要被收集分析的 golang
程式,需要提供 net/http/pprof
端點,並配置在 ./collector.yaml
配置檔案中。
配置檔案可以線上更新,收集程式會監聽配置檔案的變化,即時應用變化後的配置檔案。
collector.yaml
collector:
targetConfigs:
profiler-server: # 目標名稱
interval: 15s # 抓取間隔
expiration: 0 # 無過期時間
host: localhost:9000 # 目標服務host
profileConfigs: # 使用預設配置
server2:
interval: 10s
expiration: 168h # 過期時間7天
host: localhost:9000
profileConfigs: # 覆蓋部分預設配置欄位
trace:
enable: false
fgprof:
enable: false
profile:
path: /debug/pprof/profile?seconds=10
enable: false
heap:
path: /debug/pprof/heap
profileConfigs
預設配置
profileConfigs:
profile:
path: /debug/pprof/profile?seconds=10
enable: true
fgprof:
path: /debug/fgprof?seconds=10
enable: true
trace:
path: /debug/pprof/trace?seconds=10
enable: true
mutex:
path: /debug/pprof/mutex
enable: true
heap:
path: /debug/pprof/heap
enable: true
goroutine:
path: /debug/pprof/goroutine
enable: true
allocs:
path: /debug/pprof/allocs
enable: true
block:
path: /debug/pprof/block
enable: true
threadcreate:
path: /debug/pprof/threadcreate
enable: true
專案地址
本作品採用《CC 協議》,轉載必須註明作者和本文連結