Analyser le Temps CPU Dépensé dans les Jobs en Arrière-Plan (Sidekiq)

Vous pouvez activer la journalisation Sidekiq pour collecter des mesures sur le temps passé dans chaque tâche via ENV[\"DISCOURSE_LOG_SIDEKIQ\"].

Une façon de l'activer sans reconstruire le conteneur est d'éditer `/src/config/environments/production.rb` et d'ajouter ce code quelque part au début :
ENV["DISCOURSE_LOG_SIDEKIQ"] = "1"

Ensuite, redémarrez le conteneur.

Le système de tâches écrira les mesures dans log/sidekiq.log sous forme de lignes JSON, qui peuvent être facilement résumées via jq.

Pour obtenir le temps total et moyen passé dans les tâches prenant plus de 5 % du temps total :

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 « J'aime »