Uso de CPU incomumente alto

(não swap, mas estão lendo do disco)

isso se encaixa com minhas observações anteriores:

Note que este é o tamanho da relação e dos índices. Compare com pg_relation_size.

Isso é de ScoreCalculator, parte de PeriodicalUpdates.

Esta é a sua descoberta que precisa ser resolvida. Em comparação, aqui no meta, Jobs::EnsureDbConsistency leva <2min e Jobs::TopRefreshOlder leva <10s:

O Postgres precisa de mais memória. Dê a ele o máximo que puder.

Você também pode ver benefícios com um VACUUM ANALYZE ou VACUUM ANALYZE FULL. Fazer o primeiro nunca prejudica.

Eu provavelmente faria, em ordem:

  • vacuum analyze
  • pausar sidekiq e depois vacuum analyze full (isso congela as tabelas para reescrevê-las completamente, pode incorrer em algumas falhas enquanto é executado)
  • mais memória para o postgres
1 curtida