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

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.yaml 后 systemctl 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 驱动层,需要单独处理

相关推荐
向成科技1 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
SelectDB技术团队1 小时前
一条日志两套引擎的账:把 Elasticsearch 检索与分析合并到同一份数据的落地写法
大数据·数据库·elasticsearch·搜索引擎·全文检索·日志·apache doris
Fcy6481 小时前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
菜鸡养成中...2 小时前
卫星通信协议笔记1-协议栈
网络
码农小韩2 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论
well06122 小时前
Linux粘滞位与Makefile机制深度解析
linux·运维·服务器
再写一行代码就下班2 小时前
linux sh脚本在windows修改导致无法使用解决方式
java·linux·centos
hzxpaipai2 小时前
杭州企业官网怎么建设?从策划到上线的5步建站方法
运维·服务器·前端·网络
smartpi_ai2 小时前
通用脱机烧录器为什么烧不进 CI-03?下载协议的门槛、免唤醒 10 条的建议值属性
服务器·网络·ci/cd
额额额对了2 小时前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm