针对 Shadowrocket(小火箭) 的系统资源占用优化,特别是解决耗电高、CPU占用高、内存占用大等问题,可以从以下几个层面进行优化:
配置层面优化(最关键)
精简规则集
- 问题:规则数量超过 5000-10000 条会显著增加 CPU 负担和匹配延迟
- 优化:
- 使用 精简版规则(如仅保留常用网站分流)
- 合并重复规则,删除不常用的 DOMAIN-KEYWORD 规则
- 优先使用
DOMAIN-SUFFIX而非大量DOMAIN规则(匹配效率更高) - 避免使用过于复杂的逻辑规则(如
AND,OR,NOT嵌套)
优化节点组策略
- 问题:自动测速过于频繁会导致持续的网络请求和计算
- 优化:
- 将
url-test/fallback的interval调整为 300-600秒(默认通常是300秒) - 关闭
lazy选项(或确保开启,避免后台持续测试) - 减少节点组中的节点数量(保留 3-5 个常用节点即可)
- 将
功能设置优化
日志与调试
设置 → 日志记录 → 关闭 或 设置为"错误"级别
- 说明:Verbose/Debug 模式会持续写入日志,增加磁盘和 CPU 负担
DNS 优化
- 配置:
- 使用 DoH/DoT 替代传统 DNS(减少查询次数)
- 启用 DNS 缓存(
dns-server中设置hijack) - 关闭 IPv6 解析(如果网络不支持 IPv6):
设置 → 高级 → IPv6 → 关闭
连接设置
- TCP 并发:适当降低(默认通常足够)
- 心跳包:调整为 60-120秒(默认 30 秒过于频繁)
- UDP 转发:如不需要游戏加速,可关闭或限制
高级优化技巧
脚本与 MitM 优化
- 脚本:减少使用 JavaScript 脚本(特别是复杂的美化脚本或定时脚本)
- MitM(中间人攻击):仅对必要域名开启,证书验证会增加 CPU 负担
- Rewrite:精简重写规则,避免全局匹配
使用轻量级代理模式
- TUN 模式(iOS):资源占用较高,仅在需要代理所有流量时使用
- 混合模式:优先使用 规则模式 而非 全局模式(减少不必要的连接)
缓存优化
在配置文件中添加:
[General]dns-cache-ttl = 600 # 连接复用 tcp-concurrent = false
iOS 系统级优化
后台策略
- 设置 → 通用 → 后台 App 刷新:关闭(Shadowrocket 不需要后台刷新即可工作)
- 设置 → 电池 → 低电量模式:开启时会自动限制后台网络活动
网络权限管理
- 在 设置 → 无线局域网 中,确保小火箭仅在使用时开启代理
- 关闭 "始终允许" 定位权限(除非需要基于位置的分流)
监控资源占用
- 查看耗电:设置 → 电池 → 查看 Shadowrocket 的耗电比例(正常应 < 5%)
- CPU 监控:使用 Sysdiagnose 或第三方工具(如 CocoaTop 需越狱)查看实时 CPU
macOS 特定优化(如适用)
如果是 macOS 版本:
- 网络扩展:在"系统设置 → 网络 → 扩展"中,确保仅启用必要的扩展
- 开机启动:如不需要常驻,关闭"随系统启动"
- 菜单栏图标:关闭实时流量显示(减少图形渲染负担)
配置示例(轻量级)
[General] bypass-system = true skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 dns-server = https://doh.dns.sb/dns-query, 223.5.5.5 fallback-dns-server = system ipv6 = false prefer-ipv6 = false dns-fallback-on-failure = true hijack-dns = *:53 # 关键:增加间隔减少测速频率 test-timeout = 5 url-latency-benchmark = true [Rule] # 精简规则,优先使用 GEOIP 和 DOMAIN-SUFFIX DOMAIN-SUFFIX,google.com,Proxy DOMAIN-SUFFIX,github.com,Proxy GEOIP,CN,DIRECT FINAL,Proxy [Proxy Group] # 减少测频频率 Auto = url-test,Node1,Node2,Node3,interval=600,timeout=5
排查建议
如果优化后仍占用过高:
- 重置配置:导出备份后,使用空白配置测试,逐步添加规则定位问题
- 检查日志:查看是否有循环请求或错误日志刷屏
- 节点问题:某些协议(如 WebSocket + TLS)比直连 TCP 更耗 CPU,尝试更换协议
通过以上优化,正常情况下 Shadowrocket 的 CPU 占用应保持在 1-3%(空闲时),内存占用 20-50MB,且不应显著影响电池续航。