使用expvar进行监控
生活随笔
收集整理的這篇文章主要介紹了
使用expvar进行监控
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-
前言:
- 包expvar為公共變量提供了一個標準化的接口。如服務器中的操作計數器。
- 它以 JSON 格式通過 /debug/vars 接口以 HTTP 的方式公開這些公共變量。
- 設置或修改這些公共變量的操作是原子的。
- 除了程序使用的公共變量,還注冊了
- cmdline:這個變量就是啟動命令
- memstats: 這個變量里面存放著內存的使用情況,
-
?expvar 的使用可參考:?https://orangetux.nl/post/expvar_in_action/
- 以下具體介紹memstats,存放在runtime.mstatss.go文件的 mstats struct
-
memstats:(單位為字節(jié))紅色為重點
- Alloc 堆空間分配的字節(jié)數
- TotalAlloc?從服務開始運行至今分配器為分配的堆空間總和
- Sys?進程從系統(tǒng)獲得的內存空間,虛擬地址空間
- Lookups?被runtime監(jiān)視的指針數
- Mallocs?服務 malloc的次數
- Frees?服務 回收的heap objects
- HeapAlloc?進程 堆內存分配使用的空間,通常是用戶new出來的堆對象,包含未被gc掉的
- HeapSys ?進程從系統(tǒng)獲得的堆內存,因為golang底層使用TCmalloc機制,會緩存一部分堆內存,虛擬地址空間。
- HeapIdle ?回收了的堆內存
- HeapInuse ?正在使用的堆內存
- HeapReleased?返回給OS的堆內存
- HeapObjects ?堆內存塊申請的量
- StackInuse ?正在使用的棧
- StackSys ?系統(tǒng)分配的作為運行棧的內存
- MSpanInuse uint64?用于測試用的結構體使用的字節(jié)數, 不受GC控制
- MSpanSys uint64?系統(tǒng)為測試用的結構體分配的字節(jié)數
- MCacheInuse?mcache 結構體申請的字節(jié)數(不會被視為垃圾回收)
- MCacheSys?操作系統(tǒng)申請的堆空間用于mcache的字節(jié)數
- BuckHashSys?用于剖析桶散列表的堆空間
- GCSys?垃圾回收標記元信息使用的內存
- OtherSys?golang系統(tǒng)架構占用的額外空間
- NextGC?垃圾回收器檢視的內存大小
- LastGC?垃圾回收器最后一次執(zhí)行時間
- PauseTotalNs?圾回收或者其他信息收集導致服務暫停的次數
- PauseNs??記錄每次gc暫停的時間(納秒),最多記錄256個最新記錄。
- PauseEnd [256]uint64?一個循環(huán)隊列,記錄最近垃圾回收系統(tǒng)中斷的時間開始點
- NumGC?記錄gc發(fā)生的次數。
- NumForcedGC uint32?服務調用runtime.GC()強制使用垃圾回收的次數
- GCCPUFraction float64?垃圾回收占用服務CPU工作的時間總和。如果有100個goroutine,垃圾回收的時間為1S,那么久占用了100S
- EnableGC bool?是否啟用GC
- DebugGC bool 是否啟動DebugGC
- BySize?[61]struct{}?內存分配器使用情況
-
工具集成
-
有一些工具可以很方便地集成 expvar, 提供監(jiān)控和可視化能力, 例如:
- expvarmon(https://github.com/divan/expvarmon), 基于控制臺的輕量級監(jiān)控工具
- netdata(https://github.com/firehol/netdata/wiki/Monitoring-Go-Applications), 功能全面的服務器實時監(jiān)控工具, 提供 golang expvar 支持模塊
-
轉載于:https://www.cnblogs.com/Zereker/p/11396659.html
總結
以上是生活随笔為你收集整理的使用expvar进行监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Functional Options
- 下一篇: 服务 TCP 断线错误分析