Analizzare il tempo CPU trascorso nei lavori in background (Sidekiq)

È possibile abilitare il logging di Sidekiq per raccogliere misurazioni sul tempo impiegato in ciascun job tramite ENV[\"DISCOURSE_LOG_SIDEKIQ\"].

Un modo per abilitarlo senza ricostruire il container è modificare `/src/config/environments/production.rb` e aggiungere questo codice all'inizio:
ENV["DISCOURSE_LOG_SIDEKIQ"] = "1"

Quindi, riavviare il container.

Il sistema di job scriverà le misurazioni in log/sidekiq.log come righe di JSON, che possono essere facilmente riassunte tramite jq.

Per ottenere il tempo totale e medio impiegato nei job che richiedono più del 5% del tempo totale:

sudo apt update && apt install jq -y

jq -s '
  group_by(.job_name)
  | map({
      job_name: .[0].job_name,
      count: length,
      total_duration: (map(.duration) | add),
      average_duration: (map(.duration) | add / length)
    })
  | (map(.total_duration) | add) as $grand_total
  | map(. + { percentage: (.total_duration / $grand_total * 100) })
  | map(select(.percentage > 5))
  | sort_by(.total_duration)' log/sidekiq.log
3 Mi Piace