分析后台作业(Sidekiq)中的CPU耗时

您可以通过 ENV[\"DISCOURSE_LOG_SIDEKIQ\"] 启用 Sidekiq 日志记录,以收集每个作业所花费时间的度量。

一种无需重建容器即可启用它的方法是编辑 `/src/config/environments/production.rb` 并在其中某个靠前的位置添加以下代码:
ENV["DISCOURSE_LOG_SIDEKIQ"] = "1"

然后,重新启动容器。

作业机制会将度量写入 log/sidekiq.log,格式为 JSON 行,可以通过 jq 轻松进行汇总。

要获取花费时间超过总时间 5% 的作业的总时间和平均时间:

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 个赞