如何重置sidekiq计数器?

时间:2013-04-05 13:13:39

标签: ruby-on-rails ruby sidekiq

在我的sidekiq仪表板中,我在左侧看到一个带有计数器的框

Processed 168
Failed 111
Busy 0
Scheduled 0
Retries 0
Enqueued 0

如何将它们全部重置为0?

7 个答案:

答案 0 :(得分:100)

重置统计信息:

Sidekiq::Stats.new.reset

参考:Add reset stats to Web UI summary box and method to API

答案 1 :(得分:93)

重置已处理的作业:

Sidekiq.redis {|c| c.del('stat:processed') }

并重置失败的作业:

Sidekiq.redis {|c| c.del('stat:failed') }

答案 2 :(得分:8)

此外,要重置历史记录面板中的特定日期,您可以执行以下操作:

sample

并重复你想要清除的每一天。

如果您有一个疯狂的工作产生并且失败的次数超过平时,这很有用,并且您获得了一个带有大量尖峰的历史图表,这使得您的所有常用历史值实际上都是平坦的。

答案 3 :(得分:2)

1。清除重试集

Sidekiq :: RetrySet.new.clear

2。清除预定的作业

Sidekiq :: ScheduledSet.new.clear

3。清除“已处理”和“失败”作业

Sidekiq :: Stats.new.reset

3。清除“死”工作统计信息

Sidekiq :: DeadSet.new.clear

字体:https://gist.github.com/wbotelhos/fb865fba2b4f3518c8e533c7487d5354

答案 4 :(得分:1)

如果你想删除整个事情以及特定日期的历史记录面板,这是一个有用的片段:

/**
 * @param request
 * @param <T>
 */
public <T> void addToRequestQueue(Request<T> request) {

    request.setRetryPolicy(new DefaultRetryPolicy(
            MY_SOCKET_TIMEOUT_MS,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

    getRequestQueue().add(request);
}

答案 5 :(得分:1)

为了补充所有好的答案,使用ruby交互模式重置计数器,将其执行到控制台:

irb
irb(main):001:0> require 'sidekiq/api'
=> true
irb(main):002:0> Sidekiq.redis {|c| c.del('stat:processed') }
=> 1
irb(main):003:0> Sidekiq.redis {|c| c.del('stat:failed') }
=> 1

答案 6 :(得分:-3)

这也将重置历史记录并完全删除Redis队列中的所有内容

Sidekiq.redis {|c| c.flushdb }