如何重置我的Sidekiq计数器?

63

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

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

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

7个回答

127

9
API已更新,现在可以接受你想要重置的统计信息 来源。这意味着你现在可以清除特定的统计信息,例如 Sidekiq::Stats.new.reset('failed') 或多个统计信息,例如 Sidekiq::Stats.new.reset('failed', 'processed') - tmr08c
这似乎是更受欢迎的解决方案,我个人认为应该选中此答案。 - Ben

114

重置已处理的作业:

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

并重置失败的作业:

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

11

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

Sidekiq.redis {|c| c.del('stat:processed:2015-07-02') }
Sidekiq.redis {|c| c.del('stat:failed:2015-07-02') }

对于您想要清除的每一天重复执行此操作。

如果您有一个产生问题,比您通常更多次地失败的狂野任务,并且在历史图表中出现了大量峰值,使得所有通常的历史值实际上都成为平面线,那么这将非常有用。


6

补充所有好的答案,使用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

5

1. 清除重试集合

Sidekiq::RetrySet.new.clear

2. 清除计划任务

Sidekiq::ScheduledSet.new.clear

3. 清除“已处理”和“失败”的任务

Sidekiq::Stats.new.reset

4. 清除“死亡”任务的统计信息

Sidekiq::DeadSet.new.clear

参考来源:https://gist.github.com/wbotelhos/fb865fba2b4f3518c8e533c7487d5354


1
如果您想删除整个内容以及特定日期的历史记录面板,这里有一个有用的代码片段:
from_date = Date.new(2016, 1, 1)
to_date = Date.today

Sidekiq.redis do |redis|
  redis.del("stat:processed")
  redis.del("stat:failed")

  (from_date..to_date).each do |date|
    redis.del("stat:processed:#{date}")
    redis.del("stat:failed:#{date}")
  end
end

-6

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

Sidekiq.redis {|c| c.flushdb }

2
这是一种核心选项,将删除该Redis数据库中的所有内容,而不仅仅是Sidekiq统计信息。这意味着您将失去任何新的Sidekiq作业、任何会话以及您用Redis存储的任何其他数据。 - Parker Selbert
谢谢Parker,我正在忙着做一些事情,还没有完成这篇文章,但是你说得完全正确。 - user1320651
核心选项在你处理暂存/开发服务器时非常有用。谢谢您。 - Jesse Farmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接