具体表现

用户数过万后,后台用户列表每次翻页要等十几秒。

先判断哪一层出错

用户元数据表缺少合适索引,统计总数时全表扫描。判断时先分清是 WordPress 用户列表慢 本身的配置问题,还是上游调用、运行环境带进来的差异;前者改配置就能收口,后者要沿着请求链路一层层往上找,处理顺序不能颠倒。先在出问题的机器上复现一次,把报错原文和发生时间记下来,再对着日志定位。

操作步骤

  1. 先看慢查询日志确认语句
  2. 为用户元数据补索引
  3. 减少列表默认展示列

对应的命令或配置片段如下,可直接复制:

ALTER TABLE wp_usermeta ADD INDEX meta_key_value (meta_key(32), meta_value(32));
# 列表精简
add_filter('manage_users_columns', function ($c) {
  unset($c['posts']);
  return $c;
});

测试环境复现不了时,先对比两边的版本号和配置文件,差异往往就在被忽略的那几行里。如果同一现象隔一段时间又出现,多半是某个定时任务或重启流程把配置覆盖回去了,顺手查一遍启动脚本。

收尾检查

用户列表翻页时间降到两秒以内。

作者 9823189