加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.023zz.com.cn/)- 高性能计算、物联设备、数据可视化、操作系统、基础存储!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Android存储优化实战:14年运维经验驱动秒开体验

发布时间:2026-11-07 14:08:55 所属栏目:优化 来源:DaWei
导读:  凌晨三点二十,我盯着手机屏幕上的「存储空间不足」弹窗,手指悬在「清理」按钮上方——不是不敢点,是点过七次了,第七次点完,app直接闪退到桌面图标抖三下,跟抽风似的。去年高考期间,全市考点平板集体卡在登录页,考场外家

  凌晨三点二十,我盯着手机屏幕上的「存储空间不足」弹窗,手指悬在「清理」按钮上方——不是不敢点,是点过七次了,第七次点完,app直接闪退到桌面图标抖三下,跟抽风似的。去年高考期间,全市考点平板集体卡在登录页,考场外家长举着充电宝排队等重启,我在教育局机房蹲着看adb log,耳机里是客服第十八次重复:“您确定没清缓存?”


  我原以为是ROM厂商写的那个垃圾OTA补丁把/data/misc/keystore塞爆了,结果dd if=/dev/zero of=/data/tmp/test bs=1M count=500;五分钟后free -h一跑,/data只剩23MB。可这个数字我到现在也没想明白——明明上个月巡检时还剩4.7GB,中间没推过任何APK更新,连logrotate都设了每周一删。监控屏右下角贴着胶布,盖住那个永远显示“正常”的IO Wait告警灯。窗外雨下得闷,没雷,就一层灰蒙蒙的潮气糊在玻璃上。


  重启服务?不,先拔SD卡槽。那张被插了三年的MicroSD卡早被写烂了,坏块表里三百二十七个标记,我拿fdisk -l扫出来的时候手抖——它居然还在上报容量。老张蹲在机柜旁用万用表测供电纹波,说“这卡比咱工单系统活得久”,他话音刚落,隔壁柜子嗡一声闷响,散热风扇全停了两秒,又嗡地起来,像哮喘病人缓过一口气。我摸出自己那台红米Note8,进开发者选项关掉USB调试自动重连——上回它自己连上电脑狂传log,把我本地磁盘占满到连Wireshark都打不开。


  然后翻备份脚本。/backup/android-gradle-outputs.sh 里头写着 # FIXME: no rsync --delete,底下压着一行被注释掉的 cron -e,时间戳是去年十月十七号。李工去年十一月提过要改成rclone同步,后来他儿子发烧住院,这事就没下文。我打开终端敲ssh root@tablet-092,登进去才发现/etc/crontab里连crond都没开,systemctl status crond显示“not found”。这时候老板在运维大群甩了张图:某考生平板录屏,从点击图标到黑屏死机耗时四十来分钟,底下配字“这真是秒开?”


  我抓起泡面桶猛灌一口汤,发现底儿沉着半片干掉的海苔——昨天值班室的红烧牛肉面,面早就坨了,汤却亮晶晶浮着油星。我忽然想起上回搬家,打包箱上贴的“SSD-勿压”,结果搬家公司直接把那箱摞在UPS电池柜顶上,三天后硬盘离线率冲到12%。这次也一样,全是“不该出问题的地方”在响。优胜劣汰?呵,淘汰的是谁?是那些写SQLiteOpenHelper还硬塞十层嵌套事务的APP,是那些把base64图片往SharedPreferences里怼三千次的SDK,还是我们这种半夜三点还在grep /data/system/packages.xml里找某个package.lastUpdateTime字段的人?


  查到⭐️⭐️⭐️⭐️根因卡在/system/vendor/etc/init/hw/init.mtk.rc里一行代码:start vendor.logd。MTK芯片的老毛病,logd启动失败时根本不报错,只默默把所有日志打向/dev/block/mmcblk0p27,而这块分区名义上是vendor_log,实际大小只有64MB,连一次崩溃堆栈都存不满。我改完rc文件重载init,再push一个空文件touch /data/system/dropbox/fixed,屏幕终于亮了。这时候手机震动,我女儿电话进来,她睡迷糊了问“爸爸你是不是又没关空调”,我没答,因为耳机里传来王姐声音:“刚接到教委通知,下午三点前必须恢复所有平板‘刷题’模块的冷启动响应。”


文章配图,仅供参考

  冷启动。这个词我听够了。去年九月做压测,用systrace抓frame timeline,发现同一台设备,冷启(杀进程后点图标)要1.8秒,热启(按Home再切回来)只要220ms——中间差的那个1.58秒,是AssetManager读assets目录的IO,是Resources.loadDrawable()里for循环解码APK里的PNG,是WebViewCore在初始化之前偷偷预加载了八百个DNS解析请求。但没人管。大家只盯着PM2.5和GDP增速,谁盯一个APK安装包里多嵌了一个未压缩的so?


  我调出adb shell dumpsys diskstats,看着mmcblk0上面那串数字发呆。突然发现/data/media/0/Android/data/com.tencent.mm/files/下载的“高考押题卷PDF”已经12.3GB,点开看,全是截图转PDF的副本——每一张截图下面都有行小字:“微信内部分享,请勿外传”。我就笑了。笑完又慌,因为监控钉钉群里刚跳一条消息:tablet-092的write_iops飙升到487,而阈值设的是500。这数字太巧了,巧得让人心慌。就像当年机房断电前,UPS报警音也是恰好在498V时才响第一声。


  明天先把告警阈值调了。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!