异常高的 CPU 使用率

(不是交换空间,但它们正在从磁盘读取)

这与我早先的观察结果一致:

请注意,这是关系和索引的大小。与 pg_relation_size 进行比较。

这来自 ScoreCalculator,它是 PeriodicalUpdates 的一部分。

这是您需要解决的发现。相比之下,在 meta 上 Jobs::EnsureDbConsistency 耗时不到 2 分钟,而 Jobs::TopRefreshOlder 耗时不到 10 秒:

Postgres 需要更多的内存。尽可能多地分配给它。

您也可能会从 VACUUM ANALYZEVACUUM ANALYZE FULL 中受益。执行前者永远没有坏处。

我可能会按顺序执行以下操作:

  • vacuum analyze
  • 暂停 sidekiq 然后 vacuum analyze full(这将冻结表以完全重写它们,运行期间可能会出现一些失败)
  • 为 postgres 增加更多内存
1 个赞