Skip to content

Commit

Permalink
pprof configuration support, ehang-io#382
Browse files Browse the repository at this point in the history
  • Loading branch information
ffdfgdfg committed Feb 9, 2020
1 parent df3c840 commit 165529f
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cmd/npc/npc.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ var (
localType = flag.String("local_type", "p2p", "p2p target")
logPath = flag.String("log_path", "", "npc log path")
debug = flag.Bool("debug", true, "npc debug")
pprofAddr = flag.String("pprof", "", "PProf debug addr (ip:port)")
)

const systemdScript = `[Unit]
Expand Down Expand Up @@ -171,6 +172,7 @@ func (p *npc) run() error {
logs.Warning("npc: panic serving %v: %v\n%s", err, string(buf))
}
}()
common.InitPProfFromArg(*pprofAddr)
//p2p or secret command
if *password != "" {
commonConfig := new(config.CommonConfig)
Expand Down
1 change: 1 addition & 0 deletions cmd/nps/nps.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ func main() {
if err := beego.LoadAppConfig("ini", filepath.Join(common.GetRunPath(), "conf", "nps.conf")); err != nil {
log.Fatalln("load config file error", err.Error())
}
common.InitPProfFromFile()
if level = beego.AppConfig.String("log_level"); level == "" {
level = "7"
}
Expand Down
1 change: 1 addition & 0 deletions conf/npc.conf
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ web_username=user
web_password=1234
crypt=true
compress=true
#pprof_addr=0.0.0.0:9999

[health_check_test1]
health_check_timeout=1
Expand Down
4 changes: 4 additions & 0 deletions conf/nps.conf
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,7 @@ http_cache_length=100

#get origin ip
http_add_origin_header=false

#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999
6 changes: 6 additions & 0 deletions docs/feature.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,3 +245,9 @@ LevelInformational->6 LevelDebug->7
**对于nps:**

`nps.conf`中设置相关配置即可

## pprof性能分析与调试

可在服务端与客户端配置中开启pprof端口,用于性能分析与调试,注释或留空相应参数为关闭。

默认为关闭状态
2 changes: 2 additions & 0 deletions docs/server_config.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ log_level|日志输出级别
auth_crypt_key | 获取服务端authKey时的aes加密密钥,16位
p2p_ip| 服务端Ip,使用p2p模式必填
p2p_port|p2p模式开启的udp端口
pprof_ip|debug pprof 服务端ip
pprof_port|debug pprof 端口
2 changes: 2 additions & 0 deletions docs/use.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ rate_limit=10000
flow_limit=100
remark=test
max_conn=10
#pprof_addr=0.0.0.0:9999
```
项 | 含义
---|---
Expand All @@ -73,6 +74,7 @@ rate_limit|速度限制,可忽略
flow_limit|流量限制,可忽略
remark|客户端备注,可忽略
max_conn|最大连接数,可忽略
pprof_addr|debug pprof ip:port
#### 域名代理

```ini
Expand Down
29 changes: 29 additions & 0 deletions lib/common/pprof.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package common

import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
"net/http"
_ "net/http/pprof"
)

func InitPProfFromFile() {
ip := beego.AppConfig.String("pprof_ip")
p := beego.AppConfig.String("pprof_port")
if len(ip) > 0 && len(p) > 0 && IsPort(p) {
runPProf(ip + ":" + p)
}
}

func InitPProfFromArg(arg string) {
if len(arg) > 0 {
runPProf(arg)
}
}

func runPProf(ipPort string) {
go func() {
_ = http.ListenAndServe(ipPort, nil)
}()
logs.Info("PProf debug listen on", ipPort)
}
2 changes: 2 additions & 0 deletions lib/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ func dealCommon(s string) *CommonConfig {
c.Client.MaxConn = common.GetIntNoErrByStr(item[1])
case "remark":
c.Client.Remark = item[1]
case "pprof_addr":
common.InitPProfFromArg(item[1])
}
}
return c
Expand Down

0 comments on commit 165529f

Please sign in to comment.