跳转到主要内容

采集 NPS 与 NPC 性能分析数据

安全开启 pprof,通过 CPU、内存和协程数据诊断 NPS 或 NPC 性能问题

pprof 提供 CPU、堆内存、协程、锁等运行时数据,适合诊断 NPS/NPC CPU 异常、内存增长或协程阻塞。它默认关闭,接口没有登录认证,不能直接暴露到公网。

NPS 服务端

在 nps.conf 中只监听回环地址,然后重启 NPS:

pprof_ip=127.0.0.1
pprof_port=9999

两项必须同时有效;注释或留空即关闭。

NPC 客户端

命令行模式:

./npc -server=nps.example.com:8024 -vkey=客户端验证密钥 -pprof=127.0.0.1:9999

配置文件模式在 [common] 中设置:

[common]
pprof_addr=127.0.0.1:9999

采集数据

在同一台主机执行:

# 采集 30 秒 CPU profile,并进入交互分析
go tool pprof 'http://127.0.0.1:9999/debug/pprof/profile?seconds=30'

# 查看堆内存
go tool pprof http://127.0.0.1:9999/debug/pprof/heap

# 保存全部协程堆栈
curl -o goroutine.txt 'http://127.0.0.1:9999/debug/pprof/goroutine?debug=2'

远程分析应使用 SSH 端口转发,不要把监听改成公网地址:

ssh -L 9999:127.0.0.1:9999 user@nps.example.com

CPU profile 会增加少量运行开销,应限定采集时间。文件可能包含函数名、路径和运行状态,提交 Issue 前检查并清理敏感信息。采集完成后如不再使用,删除配置并重启对应进程。