设备变慢 / DNS 解析卡顿 —— 精简 hosts 文件 + 减少源数量
症状
手机变慢、APP 加载慢、甚至偶发的"APP 启动卡黑屏几秒"。开 AdAway 时明显,关了就好。
AdAway 作者的原话(Wiki Solutions 页面)
AdAway actually never 'runs' and takes virtually no resources. Chances are your device may only be sluggish if you've loaded an extremely large hosts file... AdAway does very little except while it's actively downloading/merging fresh copies of the ads list.
AdAway 自己几乎不耗电——hosts 文件是系统直接读的。但hosts 文件太大会拖慢 DNS 解析。
排查顺序
环节 1:hosts 文件多大?
root 模式下看实际生成的 hosts 文件:
su
wc -l /system/etc/hosts
| 行数 | 状态 |
|---|---|
| < 50,000 | 正常,不会慢 |
| 50,000 ~ 150,000 | 中等,老设备可能略有感觉 |
| > 150,000 | 偏大,应该精简 |
| > 300,000 | 严重过剩,AdAway 作者明确反对 |
环节 2:你启用了几个 hosts 源?
回到 Hosts Sources 界面,勾选的源是不是太多了?
- 1~3 个:正常
- 4~6 个:可能有冲突(多个源的重叠条目被合并去重后还好,但每个源本身都很大)
- 7 个以上:过度添加
AdAway 作者的建议:
Less is More —— 少即是多。 默认选 2~3 个高质量源就够了,不需要为了覆盖更多域名堆一堆源。很多"新发现"的 hosts 源条目数小、维护频率低、或者被污染过。
环节 3:启用的源是不是被污染了
某些 hosts 源会被恶意注入条目(比如把银行域名重定向到钓鱼 IP),或者被大量过时的域名塞爆。
检查:
- 在 Hosts Sources 界面看每个源的条目数
- 如果某个冷门源有几十万条,警惕——大概率是被合并了多个过时的大源
- 只保留:AdAway 官方 hosts + Steven Black + (可选)Malware Domain List
环节 4:VPN 模式的额外负担
如果你用的是 VPN 模式(非 root):
- 每个 DNS 请求都要过一遍虚拟网卡 + hosts 哈希索引
- hosts 文件越大,哈希索引的 lookup 越慢(但 AdAway 做了优化,比线性快得多)
- VPN 进程本身常驻会耗电池
VPN 模式下 hosts 文件的影响比 root 模式大,建议 hosts 文件控制在 5~8 万行以内。
环节 5:后台进程被杀
如果后台被杀:
- root 模式:hosts 文件还在,拦截继续生效,但 hosts 自动更新不会执行
- VPN 模式:VPN 断开 → 广告回来 → 但设备不会"变慢"
所以"变慢"的原因基本在 root 模式下也发生了——和后台被杀无关。
解决方案
立刻生效的精简步骤
- 去 Hosts Sources 界面
- 禁用或删除你不太能叫出名字的源
- 只留:
- AdAway 官方 hosts(最干净,误杀最少)
- Steven Black Unified Hosts(覆盖面大,社区质量稳定)
- 如果你特别在意恶意域名,加 Malware Domain List(不含广告)
- 重新应用 hosts
- 用
wc -l /system/etc/hosts确认条目数降到 10 万以内
如果还慢
- 重启设备(某些 Android 版本的 Java DNS 缓存会让大 hosts 的影响持续到重启)
- 检查 SELinux 状态:某些定制 ROM 的 SELinux enforcing 模式可能让 hosts 文件读取变慢
重新应用 hosts 后也没用 → 可能不是 AdAway 的锅
关掉 AdAway 再重启,如果还是慢 → 其他问题(ROM、其他 APP、系统存储不足)。AdAway 的影响只体现在 hosts 解析这一步,不会影响整机性能。
正确的 hosts 源使用姿势
| 阶段 | hosts 源数量 | 推荐源 |
|---|---|---|
| 新手起步 | 2 个 | AdAway 官方 + Steven Black |
| 进阶补充恶意域名 | 3 个 | 上面两个 + MDL |
| 隐私偏执 | 3~4 个 | Steven Black + Energized Blu + MDL + 217heidai |
最多不要超过 4 个。多出来的域名自己用 Blocklist 精准补,比堆一堆源靠谱。
一句话总结
设备变慢 = hosts 文件太大。砍源、留 2~3 个高质量、行数控制在 10 万以内。
AdAway 本身不耗资源,慢的是系统读 hosts 的那一步。