백그라운드 작업(Sidekiq)에서 소비된 CPU 시간 분석

ENV["DISCOURSE_LOG_SIDEKIQ"]를 통해 각 작업에 소요된 시간을 측정하는 로깅을 활성화할 수 있습니다.

컨테이너를 다시 빌드하지 않고 이를 활성화하는 방법 중 하나는 `/src/config/environments/production.rb` 파일을 편집하여 다음 코드를 앞부분 어딘가에 추가하는 것입니다:
ENV["DISCOURSE_LOG_SIDEKIQ"] = "1"

그 후 컨테이너를 재시작하세요.

작업 메커니즘은 JSON 라인 형식으로 log/sidekiq.log에 측정 값을 기록하며, 이를 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개의 좋아요