懒猫读书 iPad OOM 问题排查与修复
Tech

20 年古法编程,非遗手法就是 “远程把脉”。

今天有一个用户反映懒猫读书会导致平板卡死,我一看,好家伙,超大文件 PDF 彩印文件。

排查过程

  1. 先排除是不是机械盘 IO 问题——用户说用的固态盘,排除 IO 瓶颈。
  2. 扫描 PDF 的后台有渲染进程,问题肯定出在这条逻辑支流上。
  3. 问了一下用户,是打开就卡死,没有做缩放操作,排除缩放分支。
  4. 让用户试一下手机,手机没问题。再问平板内存,iPad 6。

原因很清楚了:PDF 过于大,首屏渲染高清图片加上后面几页预加载,瞬间内存过大触发了果子家的 OOM,直接把前端 WebView 进程干死了。

修复方案

做更精细的视口渲染,保持清晰度和操作不变的情况下,让后端只发屏幕区域和缩放比例的图,把内存占用控制在常量,减少 90% 的内存占用,这样果子就不会杀进程了。

远程定位问题,三下五除二找到根因,这就是二十年老程序员的手感。