diff --git a/go.mod b/go.mod index 6a9cdf0..67c87d4 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect github.com/getlantern/go-update v0.0.0-20190510022740-79c495ab728c github.com/getlantern/golog v0.0.0-20201105130739-9586b8bde3a9 // indirect + github.com/gin-contrib/pprof v1.3.0 github.com/gin-gonic/gin v1.6.3 github.com/gorilla/websocket v1.4.2 github.com/guonaihong/gout v0.1.3 diff --git a/go.sum b/go.sum index 6d8a37a..6fa1266 100644 --- a/go.sum +++ b/go.sum @@ -29,9 +29,12 @@ github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55 h1:XYzSdCbkzOC0F github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55/go.mod h1:6mmzY2kW1TOOrVy+r41Za2MxXM+hhqTtY3oBKd2AgFA= github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f h1:wrYrQttPS8FHIRSlsrcuKazukx/xqO/PpLZzZXsF+EA= github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f/go.mod h1:D5ao98qkA6pxftxoqzibIBBrLSUli+kYnJqrgBf9cIA= +github.com/gin-contrib/pprof v1.3.0 h1:G9eK6HnbkSqDZBYbzG4wrjCsA4e+cvYAHUZw6W+W9K0= +github.com/gin-contrib/pprof v1.3.0/go.mod h1:waMjT1H9b179t3CxuG1cV3DHpga6ybizwfBaM5OXaB0= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= +github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= diff --git a/main.go b/main.go index 0972ba4..77e317f 100644 --- a/main.go +++ b/main.go @@ -214,6 +214,10 @@ func main() { log.SetLevel(log.DebugLevel) log.Warnf("已开启Debug模式.") log.Debugf("开发交流群: 192548878") + server.Debug = true + if conf.WebUi == nil || !conf.WebUi.Enabled { + log.Warnf("警告: 在Debug模式下未启用WebUi服务, 将无法进行性能分析.") + } } if !global.PathExists("device.json") { log.Warn("虚拟设备信息不存在, 将自动生成随机设备.") diff --git a/server/apiAdmin.go b/server/apiAdmin.go index 704f738..226a437 100644 --- a/server/apiAdmin.go +++ b/server/apiAdmin.go @@ -5,6 +5,7 @@ import ( "bytes" "encoding/base64" "fmt" + "github.com/gin-contrib/pprof" "image" "io/ioutil" "net/http" @@ -75,6 +76,12 @@ func (s *webServer) Run(addr string, cli *client.QQClient) *coolq.CQBot { //通用路由 s.engine.Any("/admin/:action", s.admin) + if Debug { + pprof.Register(s.engine) + log.Debugf("pprof 性能分析服务已启动在 http://%v/debug/pprof, 如果有任何性能问题请下载报告并提交给开发者", addr) + time.Sleep(time.Second * 3) + } + go func() { //开启端口监听 if s.Conf.WebUi != nil && s.Conf.WebUi.Enabled { diff --git a/server/http.go b/server/http.go index 1778a6a..2275d47 100644 --- a/server/http.go +++ b/server/http.go @@ -35,6 +35,7 @@ type httpClient struct { } var HttpServer = &httpServer{} +var Debug = false func (s *httpServer) Run(addr, authToken string, bot *coolq.CQBot) { gin.SetMode(gin.ReleaseMode) @@ -93,13 +94,6 @@ func (s *httpServer) Run(addr, authToken string, bot *coolq.CQBot) { time.Sleep(time.Second * 5) os.Exit(1) } - //err := s.engine.Run(addr) - //if err != nil { - // log.Error(err) - // log.Infof("请检查端口是否被占用.") - // time.Sleep(time.Second * 5) - // os.Exit(1) - //} }() }