2025-04-18 17:17:23 +08:00

66 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package pprof
import (
"expvar"
_ "expvar"
"net/http"
_ "net/http/pprof"
"sync"
)
var _expvars_ints = make(map[string]*expvar.Int)
var _expvars_floats = make(map[string]*expvar.Float)
var _expvars_strings = make(map[string]*expvar.String)
var _expvars_ints_lock = &sync.RWMutex{}
var _expvars_floats_lock = &sync.RWMutex{}
var _expvars_strings_lock = &sync.RWMutex{}
// StartCommonProfileMonitor 启动公共性能分析http服务器
// 接口1http://ip:port/debug/vars返回内存监控的json数据
// 接口2http://ip:port/debug/pprof/xxx
func StartCommonProfileMonitor(accessHttpAddr string) {
go func() {
http.ListenAndServe(accessHttpAddr, nil)
}()
}
// AddCommonProfileExpVarInt 添加/debug/vars返回的json变量保证全局名字唯一
func AddCommonProfileExpVarInt(name string, delta int64) {
_expvars_ints_lock.Lock()
defer _expvars_ints_lock.Unlock()
if data, find := _expvars_ints[name]; find {
data.Add(delta)
} else {
v := expvar.NewInt(name)
v.Add(delta)
_expvars_ints[name] = v
}
}
// AddCommonProfileExpVarFloat 添加/debug/vars返回的json变量保证全局名字唯一
func AddCommonProfileExpVarFloat(name string, delta float64) {
_expvars_floats_lock.Lock()
defer _expvars_floats_lock.Unlock()
if data, find := _expvars_floats[name]; find {
data.Add(delta)
} else {
v := expvar.NewFloat(name)
v.Add(delta)
_expvars_floats[name] = v
}
}
// AddCommonProfileExpVarInt 添加/debug/vars返回的json变量保证全局名字唯一
func AddCommonProfileExpVarString(name string, cur string) {
_expvars_strings_lock.Lock()
defer _expvars_strings_lock.Unlock()
if data, find := _expvars_strings[name]; find {
data.Set(cur)
} else {
v := expvar.NewString(name)
v.Set(cur)
_expvars_strings[name] = v
}
}