【问题标题】:How do I reset my sidekiq counters?如何重置我的 sidekiq 计数器?
【发布时间】:2013-03-27 22:14:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails ruby sidekiq


    【解决方案1】:

    重置统计数据:

    Sidekiq::Stats.new.reset

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

    此外,您现在可以清除特定统计数据:

    • Sidekiq::Stats.new.reset('failed') 的单一统计数据
    • Sidekiq::Stats.new.reset('failed', 'processed')的多个统计数据

    (感谢https://stackoverflow.com/users/2475008/tmr08c更新)

    【讨论】:

    • API 已更新,现在接受您要重置的统计信息source。因此,您现在可以清除特定统计信息Sidekiq::Stats.new.reset('failed') 或多个统计信息Sidekiq::Stats.new.reset('failed', 'processed')
    • 这似乎是更首选的解决方案,IMO 应该是选择的答案
    【解决方案2】:

    要重置已处理的作业:

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

    并重置失败的作业:

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

    【讨论】:

      【解决方案3】:

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

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

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

      如果你有一个疯狂的工作产生和失败的次数比你平时多很多次,并且你得到一个历史图表,其中有一个巨大的峰值,这使得你所有的常用历史值实际上都是一条平线。

      【讨论】:

        【解决方案4】:

        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

        【讨论】:

          【解决方案5】:

          只是为了补充所有好的答案,使用 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】:

            如果您想删除整个内容以及特定日期的历史记录面板,这里是有用的 sn-p:

            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
            

            【讨论】:

              【解决方案7】:

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

              Sidekiq.redis {|c| c.flushdb }
              

              【讨论】:

              • 这是一个核选项,将删除该 Redis 数据库中的所有内容,而不仅仅是 Sidekiq 统计信息。这意味着您将丢失任何新的 Sidekiq 作业、任何会话以及您碰巧使用 Redis 的任何其他数据。
              • 谢谢帕克,我正忙着写完这篇文章,但是你是 100% 正确的。
              • 核选项在您使用暂存/开发服务器时非常有用。谢谢你。
              猜你喜欢
              • 2012-01-21
              • 1970-01-01
              • 2023-03-18
              • 2014-05-28
              • 1970-01-01
              • 2016-01-13
              • 2015-03-28
              • 1970-01-01
              • 2019-10-14
              相关资源
              最近更新 更多