Skip to content

v2.16.7 — 真实库卡死根治:604 源实机剖析五连修

Latest

Choose a tag to compare

@suzike suzike released this 19 Oct 17:27
· 1 commit to main since this release

v2.16.7 — 真实库卡死根治(R120.7):604 源实机剖析五连修

v2.16.6 后用户实报「启动更新订阅源整个软件还是会卡死」。本次用真实订阅库(604 源 / 3.7 万篇 / 1.5GB)沙箱 + 真网络逐相位剖析,抓出合成数据测不到的四个叠加真凶并全部根治。

四个真凶(剖析实测)

  1. FTS 全文索引回填死循环(首要):存量回填 37118 篇从未跑完 → 完成标记永不置位 → 每次启动从第 0 行重跑;每批 400 篇只有 30ms 让行,单批同步数秒
  2. 灌库分片定长遇巨文:20 篇/片在巨文源上单片 300-600ms,365 天窗一年回补期间 >300ms 卡点 151 次(约每 5 秒冻一次)
  3. 事件聚类单批同步 6.6 秒:刷新收尾的延迟聚类 50 条/批,在 3.7 万篇库上剖析实测最大间隙 6623ms
  4. 批量刷新拖尾 + 既有 bug:慢源 30s 超时 ×2 重试 ×604 源 ÷ 6 并发;且死源过滤只认 'auto' 而定时器传 'scheduled'——死源从未被跳过

修复

  • FTS 回填重写:20 篇/批 + 批间 50ms 呼吸 + 游标断点续跑(中断不再从头来)+ 刷新进行中让位 + 首轮刷新结束 60s 后才起跑(不再与启动刷新撞车)+ 回填正文 8KB 前缀降帽(新文章实时索引仍 64KB 全量)
  • 分片按字节自适应:累计 48KB 或 20 篇先到为准,巨文源自动缩到每片 1-3 篇,>300ms 卡点 151 → 8
  • 事件聚类批 50 → 4:单块压回数百 ms(聚类纯后台,不赶时间)
  • 批量刷新节流:慢源 15s 超时(手动单源保持 30s)+ 批量失败不重试(下周期再试)+ 定时/启动刷新跳过本周期已刷过的源 + 死源过滤 'scheduled' 口径修复

实测(604 源真库真网络沙箱)

指标 v2.16.6 v2.16.7
启动批量刷新 15+ 分钟收不了尾 145 秒完成
事件循环最大卡点 6.6 秒 558ms
>300ms 卡点(刷新全程) 151 次 个位数

探针门禁 r120 扩到 22 断言(自适应分片 / 回填断点续跑与让位 / 批量超时 / 新鲜度跳过 / 死源口径)。

校验和

文件 SHA-256
RobinRead-2.16.7-setup.exe 25ce22acfb03b55fb1ad4a1408aade1e074bdf4daf9e0dc92566c61f69f04551
RobinRead-2.16.7-portable.exe 47fa7f1eb0acb400e633195512c0815431c60414ed1e031cd28d9aa93aea9bbb