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

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

相关推荐
ONLYOFFICE1 小时前
ONLYOFFICE成为Linux操作系统 – Winux的预装办公套件
linux·运维·服务器
mounter6251 小时前
从内核安全到可编程基础设施:Meta 的 eBPF 实践与形式化验证探索
linux·ebpf·linux kernel·kernel
新时代牛马1 小时前
嵌入式 Linux WiFi 框架完整篇:从cfg80211、mac80211 到wpa_supplicant
linux·运维·服务器
吴声子夜歌2 小时前
Linux命令——打印
linux·运维·服务器
企鹅的蚂蚁2 小时前
Linux 开发板串口调试:picocom 从识别到退出的完整用法
linux·运维·服务器
bksczm2 小时前
从 “什么是 MySQL“ 到库与表的完整操作(MySQL基础篇)
linux·数据库·mysql
企鹅的蚂蚁2 小时前
LubanCat RK3588 实时内核移植第一步:先确认硬件与系统版本
linux·lubancat·嵌入式linux·freempt_rt
是个西兰花2 小时前
网络基础1
linux·网络·c++·智能路由器
2601_962299882 小时前
Python编写Linux命令指南
linux·python·开发·命令·指南
此冬歌咏3 小时前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化