Аномально высокая загрузка процессора

(не своп, но они читают с диска)

это согласуется с моими более ранними наблюдениями:

Обратите внимание, что это размер отношения и индексов. Сравните с pg_relation_size.

Это из ScoreCalculator, часть PeriodicalUpdates.

Это ваше наблюдение, которое необходимо решить. Для сравнения, здесь, на meta, Jobs::EnsureDbConsistency выполняется за <2 минуты, а Jobs::TopRefreshOlder — за <10 секунд:

Postgres нуждается в большем объеме памяти. Выделите ему как можно больше.

Также может помочь выполнение VACUUM ANALYZE или VACUUM ANALYZE FULL. Выполнение первого никогда не вредит.

Я бы рекомендовал выполнить в следующем порядке:

  • vacuum analyze
  • приостановить Sidekiq, затем выполнить vacuum analyze full (это замораживает таблицы для их полной перезаписи, что может привести к некоторым сбоям во время выполнения)
  • увеличить объем памяти для PostgreSQL