订阅管理及节点过滤实践(技术笔记)

2026/7/22

环境

  • 设备:hi3798mv100(ARMv7,969MB RAM)

  • 系统:Linux 4.4.35,Debian-based

  • 代理内核:v1.19.3(systemd 管理)

  • Web 面板:已部署

订阅管理方案

多配置切换

创建 /usr/local/bin/proxy-switch,管理两套配置:

bash

复制代码
proxy-switch lite   # 配置 A + 配置 B,约78个节点,内存~49MB
proxy-switch full   # 加配置 C(过滤后约200节点,内存~80MB)

原理:cp 对应配置到 /etc/proxy/config.yamlsystemctl restart 代理服务

配置结构

text

复制代码
/etc/proxy/
├── config.yaml       # 当前激活配置
├── config-lite.yaml  # 精简版(仅两个主力订阅源)
├── config-full.yaml  # 全量版(含配置 C)
├── proxies/          # 订阅节点缓存
├── ui/               # Web 面板
├── geoip.dat         # GeoIP 数据库
└── geosite.dat       # GeoSite 数据库

订阅节点膨胀问题

现象

某个订阅源返回 6133 个节点,其中:

  • 精品节点(有特定标注):122 个

  • 公开节点(来自公共聚合站):5971 个

后者来自公开代理聚合站,每天数千个,量大质杂,设备内存有限时影响明显。

分析:122 个精品节点构成

按服务器 IP 去重后:

  • 120 台独立服务器

  • 其中 37 台有全能类型节点

  • 83 台为受限节点

  • 仅 2 台服务器有重复端口,且无全能/受限混合情况

解决方案:代理内核内置过滤规则

无需第三方工具,直接在配置文件的订阅源部分添加过滤规则:

yaml

复制代码
proxy-providers:
  配置C:
    type: http
    url: "https://example.com/sub"
    interval: 86400
    filter: "关键词1|关键词2"           # 只保留特定标注的节点
    exclude-filter: "公共源关键词"       # 排除公开聚合站的节点

内核拉取订阅后自动按节点名过滤,5971 个节点直接丢弃,更新时自动重新过滤。

过滤规则说明

  • filter:保留节点名匹配正则的节点

  • exclude-filter:排除节点名匹配正则的节点

  • 两者可同时使用

  • 支持 | 分隔多个正则

性能参考

模式 节点数 内存占用 说明
lite 78 ~49MB 两个主力订阅源
full(无过滤) 6133 ~193MB 含公开聚合站节点
full(有过滤) ~200 ~80MB 仅保留精品节点

内存大头在 Go runtime + geoip 数据库,节点本身开销约 250KB/个。

资源优化技巧

yaml

复制代码
find-process-mode: off      # 关掉进程发现,省 CPU
disable-keep-alive: true    # 关 keepalive,省连接
sniffer:
  enable: false             # 关嗅探,省资源
log-level: silent           # 关日志

其他问题:内核日志风暴

某芯片驱动在内核态写日志到 USB 磁盘,导致 D 状态线程堆积、load average 偏高。

禁用方法(已写入 /etc/rc.local):

bash

复制代码
echo 'storepath=' > /proc/hisi/msp/log  # 清空存储路径
# 所有模块设 FATAL 级别
cat /proc/hisi/msp/log | grep -E '^HI_|^jpeg|^ca|VSYNC|ASYNC' | \
  awk '{print $1}' | while read mod; do
    echo "${mod}=0" > /proc/hisi/msp/log 2>/dev/null
done
echo "0 4 1 7" > /proc/sys/kernel/printk  # 内核日志最小化

日志全面禁用

bash

复制代码
systemctl mask rsyslog
systemctl mask systemd-journald

相关文件

文件 用途
/etc/proxy/config-full.yaml 全量配置(已配过滤规则)
/etc/proxy/config-lite.yaml 精简配置
/usr/local/bin/proxy-switch 配置切换脚本
/etc/rc.local 启动时禁用 BSP 日志

总结

  1. 使用内置过滤规则 比第三方工具更轻量,直接在代理内核层面丢弃无用节点

  2. 配置切换脚本 让两套方案灵活切换,兼顾内存和节点覆盖

  3. 资源优化参数 对低配 ARM 设备效果明显

  4. 日志风暴 可能来自 SoC 驱动层,需要单独处理

相关推荐
xiaoye-duck2 小时前
《Linux网络编程》吃透 Linux 网络传输全流程:完整梳理局域网通信、封装解包与跨网络传输原理
linux·网络
IT小盘2 小时前
17-AI应用防止越权访问知识库
服务器·网络·windows
酷可达拉斯2 小时前
自动化运维-Ansible Role详解
linux·运维·服务器·自动化·ansible
为思念酝酿的痛2 小时前
Socket编程--TCP
服务器·网络·tcp/ip
牢姐与蒯3 小时前
Linux首战之进度条
linux·运维·服务器
北城笑笑3 小时前
Server 18 ,Nginx + Vite 前端部署排错实战:从 `/api/gpt/chat` 404 到 9012 后端服务的完整定位过程
linux·运维·前端·nginx·ubuntu·vue
NJCloud3 小时前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
hehelm4 小时前
仿muduo库实现高并发服务器—TCPServer
linux·服务器·网络·c++
鲁邦通物联网4 小时前
充电站底层脱机DLB引擎解构:基于Linux调度的边缘计算网关并发控制实战
linux·运维·人工智能·边缘计算·边缘计算网关·5g数采·工业级边缘计算网关