wp post list --post_type=post --meta_key=_seed --format=ids | xargs -r wp post delete --force
wp db query "DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts)"

测试站后台文章列表点开要 40 秒,数据库里 wp_posts 有 12 万行,其中九成是压测脚本生成的 Test Post,搜索框输入什么都卡。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:压测和导入演示数据都没有清理机制,跑完就留在库里。文章、postmeta、term 关系三张表一起涨,后台查询的计数和排序都变慢。

「测试数据清理」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

处理上按这个顺序:压测数据统一打一个 meta 标记,清理时按标记删;写一个脚本删文章并连带清 postmeta 和 term_relationships;保留一份基础数据集,每次重置从这份快照恢复;在测试站加一个定时任务,每周清一次超过七天的假数据。

确认没问题再收工,文章总数回到 800 条左右,后台列表 2 秒内打开,搜索不再转圈。

作者 9823189