mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-06 20:13:50 +08:00
feat: pprof server.
This commit is contained in:
parent
beb5c77767
commit
48b095f825
@ -86,6 +86,12 @@ type HTTPServer struct {
|
|||||||
MiddleWares `yaml:"middlewares"`
|
MiddleWares `yaml:"middlewares"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PprofServer struct {
|
||||||
|
Disabled bool `yaml:"disabled"`
|
||||||
|
Host string `yaml:"host"`
|
||||||
|
Port int `yaml:"port"`
|
||||||
|
}
|
||||||
|
|
||||||
// WebsocketServer 正向WS相关配置
|
// WebsocketServer 正向WS相关配置
|
||||||
type WebsocketServer struct {
|
type WebsocketServer struct {
|
||||||
Disabled bool `yaml:"disabled"`
|
Disabled bool `yaml:"disabled"`
|
||||||
|
@ -110,11 +110,22 @@ servers:
|
|||||||
reconnect-interval: 3000
|
reconnect-interval: 3000
|
||||||
middlewares:
|
middlewares:
|
||||||
<<: *default # 引用默认中间件
|
<<: *default # 引用默认中间件
|
||||||
|
# pprof 性能分析服务器, 一般情况下不需要启用.
|
||||||
|
# 如果遇到性能问题请上传报告给开发者处理
|
||||||
|
# 注意: pprof服务不支持中间件、不支持鉴权. 请不要开放到公网
|
||||||
|
- pprof:
|
||||||
|
# 是否禁用pprof性能分析服务器
|
||||||
|
disabled: true
|
||||||
|
# pprof服务器监听地址
|
||||||
|
host: 127.0.0.1
|
||||||
|
# pprof服务器监听端口
|
||||||
|
port: 7700
|
||||||
|
|
||||||
# 可添加更多
|
# 可添加更多
|
||||||
#- ws-reverse:
|
#- ws-reverse:
|
||||||
#- ws:
|
#- ws:
|
||||||
#- http:
|
#- http:
|
||||||
|
#- pprof:
|
||||||
|
|
||||||
database: # 数据库相关设置
|
database: # 数据库相关设置
|
||||||
leveldb:
|
leveldb:
|
||||||
|
1
go.mod
1
go.mod
@ -6,6 +6,7 @@ require (
|
|||||||
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f
|
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20210411120128-5a90a592d071
|
github.com/Mrs4s/MiraiGo v0.0.0-20210411120128-5a90a592d071
|
||||||
github.com/dustin/go-humanize v1.0.0
|
github.com/dustin/go-humanize v1.0.0
|
||||||
|
github.com/gin-contrib/pprof v1.3.0 // indirect
|
||||||
github.com/gin-gonic/gin v1.6.3
|
github.com/gin-gonic/gin v1.6.3
|
||||||
github.com/gorilla/websocket v1.4.2
|
github.com/gorilla/websocket v1.4.2
|
||||||
github.com/guonaihong/gout v0.1.6
|
github.com/guonaihong/gout v0.1.6
|
||||||
|
3
go.sum
3
go.sum
@ -14,9 +14,12 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn
|
|||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
|
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 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||||
github.com/gin-gonic/gin v1.6.0/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
|
github.com/gin-gonic/gin v1.6.0/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
|
||||||
|
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 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
|
||||||
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
|
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=
|
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
|
||||||
|
8
main.go
8
main.go
@ -416,6 +416,14 @@ func main() {
|
|||||||
go server.RunWebSocketClient(bot, rc)
|
go server.RunWebSocketClient(bot, rc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if p, ok := m["pprof"]; ok {
|
||||||
|
pc := new(config.PprofServer)
|
||||||
|
if err := p.Decode(pc); err != nil {
|
||||||
|
log.Warn("读取http配置失败 :", err)
|
||||||
|
} else {
|
||||||
|
go server.RunPprofServer(pc)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
log.Info("资源初始化完成, 开始处理信息.")
|
log.Info("资源初始化完成, 开始处理信息.")
|
||||||
log.Info("アトリは、高性能ですから!")
|
log.Info("アトリは、高性能ですから!")
|
||||||
|
32
server/pprof.go
Normal file
32
server/pprof.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/Mrs4s/go-cqhttp/global/config"
|
||||||
|
"github.com/gin-contrib/pprof"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func RunPprofServer(conf *config.PprofServer) {
|
||||||
|
if conf.Disabled {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
engine := gin.New()
|
||||||
|
addr := fmt.Sprintf("%s:%d", conf.Host, conf.Port)
|
||||||
|
pprof.Register(engine)
|
||||||
|
go func() {
|
||||||
|
log.Infof("pprof debug 服务器已启动: %v/debug/pprof", addr)
|
||||||
|
log.Warnf("警告: pprof 服务不支持鉴权, 请不要运行在公网.")
|
||||||
|
if err := engine.Run(addr); err != nil && err != http.ErrServerClosed {
|
||||||
|
log.Error(err)
|
||||||
|
log.Infof("pprof 服务启动失败, 请检查端口是否被占用.")
|
||||||
|
log.Warnf("将在五秒后退出.")
|
||||||
|
time.Sleep(time.Second * 5)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user