1 Star 0 Fork 0

yzsunjianguo/common_pkg

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
prof.go 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
yzsunjianguo 提交于 2024-02-08 10:53 +08:00 . 初始化
// Package prof is used for gin profiling.
package prof
import (
"net/http/pprof"
"github.com/felixge/fgprof"
"github.com/gin-gonic/gin"
)
var defaultPrefix = "/debug/pprof"
// Option set defaultPrefix func
type Option func(o *options)
type options struct {
prefix string
enableIOWaitTime bool
}
func (o *options) apply(opts ...Option) {
for _, opt := range opts {
opt(o)
}
}
// WithPrefix set route defaultPrefix
func WithPrefix(prefix string) Option {
return func(o *options) {
if prefix == "" {
return
}
o.prefix = prefix
}
}
// WithIOWaitTime enable IO wait time
func WithIOWaitTime() Option {
return func(o *options) {
o.enableIOWaitTime = true
}
}
// Register pprof for gin router
func Register(r *gin.Engine, opts ...Option) {
o := &options{prefix: defaultPrefix}
o.apply(opts...)
group := r.Group(o.prefix)
group.GET("/", gin.WrapF(pprof.Index))
group.GET("/cmdline", gin.WrapF(pprof.Cmdline))
group.GET("/profile", gin.WrapF(pprof.Profile))
group.POST("/symbol", gin.WrapF(pprof.Symbol))
group.GET("/symbol", gin.WrapF(pprof.Symbol))
group.GET("/trace", gin.WrapF(pprof.Trace))
group.GET("/allocs", gin.WrapH(pprof.Handler("allocs")))
group.GET("/block", gin.WrapH(pprof.Handler("block")))
group.GET("/goroutine", gin.WrapH(pprof.Handler("goroutine")))
group.GET("/heap", gin.WrapH(pprof.Handler("heap")))
group.GET("/mutex", gin.WrapH(pprof.Handler("mutex")))
group.GET("/threadcreate", gin.WrapH(pprof.Handler("threadcreate")))
if o.enableIOWaitTime {
// Similar to /profile, add IO wait time, https://github.com/felixge/fgprof
group.GET("/profile-io", gin.WrapH(fgprof.Handler()))
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/yzsunjianguo/common_pkg.git
git@gitee.com:yzsunjianguo/common_pkg.git
yzsunjianguo
common_pkg
common_pkg
v1.0.1

搜索帮助