01

先分清是谁在吃资源

任务管理器里客户端界面和内核是两个独立进程。界面进程占用高,多半是窗口开着在实时刷新连接列表;内核进程占用高,才是流量处理层面的问题。

第一步很简单:关掉主窗口只留托盘,观察十分钟。如果占用降下来了,那就不是问题,只是界面渲染的开销。内核在空闲时占用应该很低,持续占满一个核心才需要往下查。

合作推荐订阅链接从哪来?本站合作机场注册即送 1GB 香港高速体验流量,可直接一键导入。获取高速节点
02

按顺序排查四项

  1. 1

    日志级别

    设置里如果开着 debug 或 trace,每条连接都要写日志,占用会明显升高。排查完记得改回 info 或 warning,这是最容易忽略的一项。

  2. 2

    域名嗅探

    嗅探要解析每条连接的握手包才能还原域名。规则里大量用域名匹配时它很有用,但开销不小。不需要就关掉,或者只对 443 和 80 端口开启。

  3. 3

    规则集更新频率

    远程规则集数量多、更新间隔又设得很短时,会周期性地重新下载和编译规则。把间隔放大到一天一次,对绝大多数用法都够了。

  4. 4

    连接数

    下载工具和 P2P 应用会开上千条连接。在连接页按建立时间排序,看是不是同一个进程在持续刷新连接。

03

内存不降是不是异常

内核的内存占用会随连接数增长,连接关闭后也不会立刻还给系统,这是 Go 运行时的正常行为,不用紧张。判断标准是:连接数降下来之后,内存是否在几分钟内趋于平稳。一直线性上涨才算异常,那种情况记下当时的配置和内核版本,先回退一个内核版本对比。

  • 一次只改一项,改完观察十分钟再动下一项
  • TUN 的严格路由在部分网卡上开销较大,可以关掉对比
  • 长期挂机建议关掉自动测速,或把测速间隔放大
04

常见问题

关掉窗口占用就正常了,算不算问题?

不算。连接页会持续接收内核推送的数据,界面渲染本身有开销。放到托盘运行就好,这是设计如此。

同样的配置在另一台电脑上就不高,为什么?

优先怀疑网卡驱动和安全软件。杀毒软件对虚拟网卡做深度检测时,产生的开销会被算到内核进程头上,看起来就像是内核在吃 CPU。