mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-04 05:40:43 +00:00
pprof configuration support, #382
This commit is contained in:
parent
704bba92d1
commit
533dd083fe
@ -33,6 +33,7 @@ var (
|
|||||||
localType = flag.String("local_type", "p2p", "p2p target")
|
localType = flag.String("local_type", "p2p", "p2p target")
|
||||||
logPath = flag.String("log_path", "", "npc log path")
|
logPath = flag.String("log_path", "", "npc log path")
|
||||||
debug = flag.Bool("debug", true, "npc debug")
|
debug = flag.Bool("debug", true, "npc debug")
|
||||||
|
pprofAddr = flag.String("pprof", "", "PProf debug addr (ip:port)")
|
||||||
)
|
)
|
||||||
|
|
||||||
const systemdScript = `[Unit]
|
const systemdScript = `[Unit]
|
||||||
@ -171,6 +172,7 @@ func (p *npc) run() error {
|
|||||||
logs.Warning("npc: panic serving %v: %v\n%s", err, string(buf))
|
logs.Warning("npc: panic serving %v: %v\n%s", err, string(buf))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
common.InitPProfFromArg(*pprofAddr)
|
||||||
//p2p or secret command
|
//p2p or secret command
|
||||||
if *password != "" {
|
if *password != "" {
|
||||||
commonConfig := new(config.CommonConfig)
|
commonConfig := new(config.CommonConfig)
|
||||||
|
@ -59,6 +59,7 @@ func main() {
|
|||||||
if err := beego.LoadAppConfig("ini", filepath.Join(common.GetRunPath(), "conf", "nps.conf")); err != nil {
|
if err := beego.LoadAppConfig("ini", filepath.Join(common.GetRunPath(), "conf", "nps.conf")); err != nil {
|
||||||
log.Fatalln("load config file error", err.Error())
|
log.Fatalln("load config file error", err.Error())
|
||||||
}
|
}
|
||||||
|
common.InitPProfFromFile()
|
||||||
if level = beego.AppConfig.String("log_level"); level == "" {
|
if level = beego.AppConfig.String("log_level"); level == "" {
|
||||||
level = "7"
|
level = "7"
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ web_username=user
|
|||||||
web_password=1234
|
web_password=1234
|
||||||
crypt=true
|
crypt=true
|
||||||
compress=true
|
compress=true
|
||||||
|
#pprof_addr=0.0.0.0:9999
|
||||||
|
|
||||||
[health_check_test1]
|
[health_check_test1]
|
||||||
health_check_timeout=1
|
health_check_timeout=1
|
||||||
|
@ -76,3 +76,7 @@ http_cache_length=100
|
|||||||
|
|
||||||
#get origin ip
|
#get origin ip
|
||||||
http_add_origin_header=false
|
http_add_origin_header=false
|
||||||
|
|
||||||
|
#pprof debug options
|
||||||
|
#pprof_ip=0.0.0.0
|
||||||
|
#pprof_port=9999
|
||||||
|
@ -245,3 +245,9 @@ LevelInformational->6 LevelDebug->7
|
|||||||
**对于nps:**
|
**对于nps:**
|
||||||
|
|
||||||
在`nps.conf`中设置相关配置即可
|
在`nps.conf`中设置相关配置即可
|
||||||
|
|
||||||
|
## pprof性能分析与调试
|
||||||
|
|
||||||
|
可在服务端与客户端配置中开启pprof端口,用于性能分析与调试,注释或留空相应参数为关闭。
|
||||||
|
|
||||||
|
默认为关闭状态
|
@ -19,3 +19,5 @@ log_level|日志输出级别
|
|||||||
auth_crypt_key | 获取服务端authKey时的aes加密密钥,16位
|
auth_crypt_key | 获取服务端authKey时的aes加密密钥,16位
|
||||||
p2p_ip| 服务端Ip,使用p2p模式必填
|
p2p_ip| 服务端Ip,使用p2p模式必填
|
||||||
p2p_port|p2p模式开启的udp端口
|
p2p_port|p2p模式开启的udp端口
|
||||||
|
pprof_ip|debug pprof 服务端ip
|
||||||
|
pprof_port|debug pprof 端口
|
||||||
|
@ -59,6 +59,7 @@ rate_limit=10000
|
|||||||
flow_limit=100
|
flow_limit=100
|
||||||
remark=test
|
remark=test
|
||||||
max_conn=10
|
max_conn=10
|
||||||
|
#pprof_addr=0.0.0.0:9999
|
||||||
```
|
```
|
||||||
项 | 含义
|
项 | 含义
|
||||||
---|---
|
---|---
|
||||||
@ -73,6 +74,7 @@ rate_limit|速度限制,可忽略
|
|||||||
flow_limit|流量限制,可忽略
|
flow_limit|流量限制,可忽略
|
||||||
remark|客户端备注,可忽略
|
remark|客户端备注,可忽略
|
||||||
max_conn|最大连接数,可忽略
|
max_conn|最大连接数,可忽略
|
||||||
|
pprof_addr|debug pprof ip:port
|
||||||
#### 域名代理
|
#### 域名代理
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
|
29
lib/common/pprof.go
Normal file
29
lib/common/pprof.go
Normal file
@ -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)
|
||||||
|
}
|
@ -145,6 +145,8 @@ func dealCommon(s string) *CommonConfig {
|
|||||||
c.Client.MaxConn = common.GetIntNoErrByStr(item[1])
|
c.Client.MaxConn = common.GetIntNoErrByStr(item[1])
|
||||||
case "remark":
|
case "remark":
|
||||||
c.Client.Remark = item[1]
|
c.Client.Remark = item[1]
|
||||||
|
case "pprof_addr":
|
||||||
|
common.InitPProfFromArg(item[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return c
|
return c
|
||||||
|
Loading…
x
Reference in New Issue
Block a user