# Анализ времени процессора, затраченного на фоновые задачи (Sidekiq)

**URL:** https://meta.discourse.org/t/analyze-cpu-time-spent-in-background-jobs-sidekiq/356377
**Category:** Sysadmins
**Created:** [08.Март.2025 05:56:14 UTC](https://meta.discourse.org/t/analyze-cpu-time-spent-in-background-jobs-sidekiq/356377 "2025-03-08T05:56:14Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![thoka](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thoka/32/115652_2.png) [@thoka](https://meta.discourse.org/u/thoka)
#### Post date: [08.Март.2025 05:56:14 UTC](https://meta.discourse.org/t/analyze-cpu-time-spent-in-background-jobs-sidekiq/356377/1 "2025-03-08T05:56:14Z")

</div>

Вы можете включить логирование Sidekiq для сбора данных о времени, затраченном на каждую задачу, через `ENV["DISCOURSE_LOG_SIDEKIQ"]`.

> ****
>
> Один из способов включить это без пересборки контейнера — отредактировать файл `/src/config/environments/production.rb` и добавить этот код в начале:
> 
> ```ruby
> ENV["DISCOURSE_LOG_SIDEKIQ"] = "1"
> 
> ```
> 
> Затем перезапустите контейнер.

Механизм задач будет записывать данные в файл `log/sidekiq.log` в формате [JSON-линий](https://jsonlines.org/), который можно легко обработать с помощью утилиты [jq](https://jqlang.org/).

Чтобы получить общее и среднее время выполнения задач, занимающих более 5% от общего времени:

```bash
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

```
