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

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

相关推荐
浩浩测试一下4 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy4 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技5 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu5 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
忆挽篱笙歌6 小时前
环境变量,本地变量
linux·运维·服务器
是真的小外套6 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
吹什么轩8 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
小天源8 小时前
让访问数据可解释:IP 地球大屏、地区库更新与运行维护设计
网络·网络协议·tcp/ip
殷忆枫8 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
第404号工位8 小时前
手机到底有没有偷听我们?我抓包了 72 小时,抓到了真凶
linux·人工智能·架构