# 采集 NPS 与 NPC 性能分析数据

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

---

LLMS 索引： [llms.txt](/llms.txt)

---

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

## NPS 服务端

在 `nps.conf` 中只监听回环地址，然后重启 NPS：

```ini
pprof_ip=127.0.0.1
pprof_port=9999
```

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

## NPC 客户端

命令行模式：

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

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

```ini
[common]
pprof_addr=127.0.0.1:9999
```

## 采集数据

在同一台主机执行：

```shell
# 采集 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 端口转发，不要把监听改成公网地址：

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

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