1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 03:23:49 +08:00
go-cqhttp/server/pprof.go
wdvxdr 1337d3f1f3
style: move internal/config to modules/config
config should not be internal, maybe some module need it.
2021-09-26 19:41:03 +08:00

37 lines
1.1 KiB
Go

package server
import (
"fmt"
"net/http"
"net/http/pprof"
"os"
"time"
log "github.com/sirupsen/logrus"
"github.com/Mrs4s/go-cqhttp/modules/config"
)
// RunPprofServer 启动 pprof 性能分析服务器
func RunPprofServer(conf *config.PprofServer) {
addr := fmt.Sprintf("%s:%d", conf.Host, conf.Port)
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)
server := http.Server{Addr: addr, Handler: mux}
go func() {
log.Infof("pprof debug 服务器已启动: %v/debug/pprof", addr)
log.Warnf("警告: pprof 服务不支持鉴权, 请不要运行在公网.")
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Error(err)
log.Infof("pprof 服务启动失败, 请检查端口是否被占用.")
log.Warnf("将在五秒后退出.")
time.Sleep(time.Second * 5)
os.Exit(1)
}
}()
}