【发布时间】:2023-04-06 07:17:02
【问题描述】:
我们可以通过its API获得一些关于sidekiq状态的信息。没有适用于工作人员的 API 方法。
我想知道某个班级正在运行多少工人。例如,我有一个名为FooStreamer.rb 的类,它使用perform_async 方法执行。我想知道它目前正在运行多少个工人。
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails sidekiq
我们可以通过its API获得一些关于sidekiq状态的信息。没有适用于工作人员的 API 方法。
我想知道某个班级正在运行多少工人。例如,我有一个名为FooStreamer.rb 的类,它使用perform_async 方法执行。我想知道它目前正在运行多少个工人。
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails sidekiq
由 Mike(sidekiq 的创建者)通过以下提交解决:
https://github.com/mperham/sidekiq/commit/c606dd4fde8cdc795d2c750d211a74bf1b380217
【讨论】:
Sidekiq 带有一个 Sinatra Web 界面,您可以通过 mydomain.com/sidekiq 访问该界面。您只需要按照这些说明安装它(取决于您使用的是乘客还是独角兽)
https://github.com/mperham/sidekiq/wiki/Monitoring
据我所知,没有 API,但您可以轻松地遍历存储 Sidekiq 信息的 Redis 密钥,以计算在特定队列上工作的工作人员数量
workers = redis.smembers("workers")
workers.each do |worker|
tokens = worker.split(":")
machine = tokens[0]
pid = tokens[1].split("-")[0]
key = "worker:" + pid
obj = redis.get(key)
#obj will contain information on what queue this worker is processing
end
【讨论】:
您可以使用https://github.com/phstc/sidekiq-statsd 并使用 Graphite 检查统计信息。
【讨论】: