20 年古法编程,非遗手法就是 “远程把脉”。
今天有一个用户反映懒猫读书会导致平板卡死,我一看,好家伙,超大文件 PDF 彩印文件。
排查过程
- 先排除是不是机械盘 IO 问题——用户说用的固态盘,排除 IO 瓶颈。
- 扫描 PDF 的后台有渲染进程,问题肯定出在这条逻辑支流上。
- 问了一下用户,是打开就卡死,没有做缩放操作,排除缩放分支。
- 让用户试一下手机,手机没问题。再问平板内存,iPad 6。
原因很清楚了:PDF 过于大,首屏渲染高清图片加上后面几页预加载,瞬间内存过大触发了果子家的 OOM,直接把前端 WebView 进程干死了。
修复方案
做更精细的视口渲染,保持清晰度和操作不变的情况下,让后端只发屏幕区域和缩放比例的图,把内存占用控制在常量,减少 90% 的内存占用,这样果子就不会杀进程了。
远程定位问题,三下五除二找到根因,这就是二十年老程序员的手感。