使用expvar進行監控

  • 前言:

    • 包expvar爲公共變量提供了一個標準化的接口。如服務器中的操做計數器。
    • 它以 JSON 格式經過 /debug/vars 接口以 HTTP 的方式公開這些公共變量。
    • 設置或修改這些公共變量的操做是原子的。
    • 除了程序使用的公共變量,還註冊了
      • cmdline:這個變量就是啓動命令
      • memstats: 這個變量裏面存放着內存的使用狀況,
    •  expvar 的使用可參考: https://orangetux.nl/post/expvar_in_action/git

    • 如下具體介紹memstats,存放在runtime.mstatss.go文件的 mstats struct
  • memstats:(單位爲字節)紅色爲重點

    • Alloc 堆空間分配的字節數
    • TotalAlloc 從服務開始運行至今分配器爲分配的堆空間總和
    • Sys 進程從系統得到的內存空間,虛擬地址空間
    • Lookups 被runtime監視的指針數
    • Mallocs 服務 malloc的次數
    • Frees 服務 回收的heap objects
    • HeapAlloc 進程 堆內存分配使用的空間,一般是用戶new出來的堆對象,包含未被gc掉的
    • HeapSys  進程從系統得到的堆內存,由於golang底層使用TCmalloc機制,會緩存一部分堆內存,虛擬地址空間。
    • HeapIdle  回收了的堆內存
    • HeapInuse  正在使用的堆內存
    • HeapReleased 返回給OS的堆內存
    • HeapObjects  堆內存塊申請的量
    • StackInuse  正在使用的棧
    • StackSys  系統分配的做爲運行棧的內存
    • MSpanInuse uint64 用於測試用的結構體使用的字節數, 不受GC控制
    • MSpanSys uint64 系統爲測試用的結構體分配的字節數
    • MCacheInuse mcache 結構體申請的字節數(不會被視爲垃圾回收)
    • MCacheSys 操做系統申請的堆空間用於mcache的字節數
    • BuckHashSys 用於剖析桶散列表的堆空間
    • GCSys 垃圾回收標記元信息使用的內存
    • OtherSys golang系統架構佔用的額外空間
    • NextGC 垃圾回收器檢視的內存大小
    • LastGC 垃圾回收器最後一次執行時間
    • PauseTotalNs 圾回收或者其餘信息收集致使服務暫停的次數
    • PauseNs  記錄每次gc暫停的時間(納秒),最多記錄256個最新記錄。
    • PauseEnd [256]uint64 一個循環隊列,記錄最近垃圾回收系統中斷的時間開始點
    • NumGC 記錄gc發生的次數。
    • NumForcedGC uint32 服務調用runtime.GC()強制使用垃圾回收的次數
    • GCCPUFraction float64 垃圾回收佔用服務CPU工做的時間總和。若是有100個goroutine,垃圾回收的時間爲1S,那麼久佔用了100S
    • EnableGC bool 是否啓用GC
    • DebugGC bool 是否啓動DebugGC
    • BySize [61]struct{} 內存分配器使用狀況
  • 工具集成

相關文章
相關標籤/搜索