sing-box 低流量高 CPU 排查:process_name 引发的进程查询开销
结论与验证状态 本次排查定位到:sing-box 的主要 CPU 开销来自连接所属进程查询,尤其是构建进程路径信息的 buildProcessPaths。故障出现前刚新增了 process_name 匹配规则,该变更与热点高度吻合,是首要触发因素。 已验证的是性能热点;尚未收到移除规则后的对照复测结果。 因此不能把“已移除并恢复正常”写成既成事实,也不能直接归因于某个已确认的版本 Bug。 本文已去除个人主机名、账户名,将原规则中的程序名替换为 example-cli。 环境与现象 设备:N1,Linux ARM64。 sing-box:1.14.4。 Go 构建环境:go1.26.10 linux/arm64,CGO enabled。 Revision:c005f35300ce76427dc285481ec5695f5b179cd2。 现象:外部流量低、日志平静,但 CPU 持续很高。 perf 未安装;最终采用 sing-box 内置 pprof,在 Mac 上分析采样。 最初 top 输出: PID COMMAND VIRT RES SHR %CPU %MEM TIME+ 20776 sing-box 1484040 130060 41288 355.4 7.1 139:35.45 在通常的 top CPU 计数模式下,355.4% 表示约占用 3.55 个核心。RES 约 127 MiB;VIRT 约 1.42 GiB 并不等于实际物理内存占用。TIME+ 是累计 CPU 时间。 初始猜测包括忙循环、GC 压力和内部流量回环;这些仅是排查方向,不能当作诊断结果。 ...