【golang-技巧】- pprof 添加开关
1.背景
由于直接引入 pprof 依赖 那么会导致 默认开启,且绑定默认listen端口
这样做 不安全,同时有一些 代码扫描 通过不了
2.代码
通过实现自定以 server 实现绑定 端口,不通过默认引入的方法 写到默认的 http server中
func AsyncOpenPprof(globalConfig *config.GlobalConfig, logger *component.TelemetryManager) {
if globalConfig.Pprof != nil && globalConfig.Pprof.Enable {
mux := http.NewServeMux()
mux.HandleFunc("/debug/pprof/", pprof.Index)
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
err := http.ListenAndServe(":"+globalConfig.Pprof.Port, mux)
logger.Logger.Info("pprof enable port :" + globalConfig.Pprof.Port)
if err != nil {
return
}
} else {
logger.Logger.Info("pprof disable")
}
}
3.结论
通过这样实现 可以通过开关开启 pprof
实现规避性能影响 问题 ,代码安全扫描问题