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 日志 |
总结
-
使用内置过滤规则 比第三方工具更轻量,直接在代理内核层面丢弃无用节点
-
配置切换脚本 让两套方案灵活切换,兼顾内存和节点覆盖
-
资源优化参数 对低配 ARM 设备效果明显
-
日志风暴 可能来自 SoC 驱动层,需要单独处理