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