- SignalDesk1小时前
周末的时候,我的 MacBook 突然热得烫手。打开活动监视器一看,一个叫 dasd 的系统进程直接把 CPU 占满了。 dasd 其实是 macOS 的后台任务调度器。它卡死在 100%,说明有任务在疯狂排队提交。我试着强退进程、清理缓存甚至重启电脑,全都没用,安静不到半小时风扇又开始咆哮。 因为电量掉得太快,我顺手拿工具清理下磁盘,结果在系统目录深处翻出了一个离谱的巨无霸文件: /private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL 足足 9.5GB。 这是 macOS 记录性能和后台任务耗电用的 SQLite 数据库,正常大小也就几十 MB。用 lsof 看了一下,死咬着这个库不放的正是 dasd 和另一个系统进程。线索对上了——肯定是哪个后台任务在疯狂输出日志,把库撑爆了,顺便把调度器也拖死了。 直接删库?查了下 AI 说系统会自动重建,但我没敢下手,毕竟 /private/var/db 下的东西删坏了挺麻烦。我决定先连上 sqlite3 看看里面到底写了啥。 按 TaskID 分组统计了一下,几千万条记录全指向同一个元凶: 501:com.apple.appstored.ArcadeResetPO 这就很搞笑了,这是 Apple Arcade 的后台任务,而我根本就没订阅过这玩意儿(配置文件里清清楚楚写着 Unsubscribed)。一个没花钱的用户,被 Arcade 塞了上千万条遥测数据。 顺着这个 ID 去网上一搜,发现我不是一个人,小众软件和 V2EX 上。V2EX 的老哥把代码都盘包浆了,发现这是 macOS 27 正式版的一个低级 Bug: 系统里的 appstoreagent 每次算完 Arcade 开发者分成的结算日期,算出来的下一次执行时间永远是“今天 00:00”。因为这个时间一出来就已经过期了,dasd 就会立刻让它再跑一次,跑完再算,又是 00:00……直接死循环。 更邪门的是,这 Bug 专挑周日发作。从周日凌晨 00:00 开始,每秒往库里疯狂写快 700 条记录,一直烧到下午 4 点左右突然自愈,然后默默把下一次触发时间设为下周日凌晨。等于说每周给你的 Mac 上一次定时炸弹,偷偷炸 16 个小时。 知道原理,解法就简单了。分两步,先掐断死循环,再清理空间。 第一步,强行改时间。 把重置时间推到 30 天后: Bash defaults write com.apple.appstored ArcadePayoutResetDate -date “$(date -v+30d -u +%Y-%m-%dT%H:%M:%SZ)” killall appstoreagent 这等于把炸弹引信给拔了。看了一眼系统原来的设定,确实是在等下周日凌晨起爆。 第二步,清理 9.5GB 垃圾。 稳妥起见,不直接 rm,而是停掉服务,把库(连同 -shm 和 -wal 两个伴生文件)挪到 /tmp 目录,再重启服务: Bash sudo launchctl stop com.apple.powerlogHelperd sudo mv /private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL* /tmp/ sudo launchctl kickstart -k system/com.apple.powerlogHelperd 重启服务后系统会建个空库正常跑,而挪到 /tmp 的大文件等下次电脑重启就会被系统自动回收,给自己留个后悔药。 昨晚搞完早上起来,CPU 占用彻底消停,新生成的数据库也根本没怎么涨。 这个 Bug 真是绝了:不订阅 Arcade 也能中招,发作还挑周日,受害面积全看运气。目前听说苹果在 27.2 beta 里修了,等 11 月正式版推出来。在推送之前,还要 30 天后再跑一次命令续个命。 参考来源: 没用 Apple Arcade,却查出 1.12 亿条后台记录 (小众软件) macOS27 中 dasd 进程高 CPU 问题 (V2EX) Fixing macOS High CPU Usage in dasd Process ( ye-yu.com ) 1 个帖子 - 1 位参与者 阅读完整话题
- 情报分类:硬件与数码
- 分类依据:内容涉及硬件、数码产品或通信卡
- 信息来源:服务器 / LINUX DO - 最新话题
- 发布时间:2026/10/12 08:56:08
- 暂无回复