问题标签 [sidekiq-monitor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
389 浏览

ruby-on-rails - 使用同一个 Redis 服务器的多个多租户 Rails 应用程序

设想:

我们有几个使用 Sidekiq 和 Redis 的多租户应用程序。

在每个 Rails 应用程序中,我们都有几个帐户。每个帐户独立于其他帐户工作。每个帐户对应一个不同的客户。

出于成本和基础设施维护的考虑,我们希望为所有应用程序使用相同的 Redis 服务器。我们的 Multitentant 应用程序(我们有大约 20 个应用程序,大约 40 个帐户)产生的流量对于单个 Redis 服务器来说并不过分,因此我们的问题只是关于配置该服务器。

要求

我们需要唯一标识每个应用程序/帐户的每个队列,以便当 Sidekiq 充当服务器时,它只处理自己的队列。

可以在不同级别进行分离/识别:

  • 按帐户明确区分

  • 通过机器(应用程序)明确分离。每台机器(应用程序)都有一个关联的数据库,并且在该数据库中 account_id 是唯一的。每个 Job 都有一个 account_id 标识符,因此,知道 Job 属于哪台机器(或数据库),我们将自动识别该帐户。

可能的解决方案

1- 使用 uuid 识别帐户。每个帐户都有一个 uuid 字段,用于命名该帐户将在 Sidekiq 中使用的队列。

优点:我们可以轻松地按帐户过滤队列,即使在监控中也是如此。缺点:会生成很多队列,所以如果我们不控制对 Redis 服务器的轮询时间,我们可能会遇到性能问题。

2-使用不同的数据库。通过按机器(应用程序)分离数据库,我们将解决帐户唯一性的问题。问题是 Redis 默认只接受 16 个 bbdd 并且将它们编号为 0 到 15。所以对这些数据库 id 进行非常精细的处理(手动?)。

3-使用命名空间。Mike Perham 不赞成http://mikeperham.com/2015/09/24/storing-data-with-redis/ 命名空间可以作为每台机器或每个队列的分隔符。

我们非常感谢任何帮助。

提前致谢。

0 投票
1 回答
82 浏览

sidekiq - 配置 sidekiq 队列以降序显示

我们的 sidekiq 仪表板中有队列列表,如果队列大小增加,是否有任何方法可以将队列配置为按降序显示。

例如,我在仪表板中列出了 100 个 sidekiq 队列,如果其中一个队列增加了第 70 个队列大小(显然队列将位于仪表板的中间)。

所以70个队列必须单独显示在页面顶部(即队列必须根据队列大小降序显示),以便于监控。无论如何要以这种方式配置?请协助。

0 投票
0 回答
708 浏览

ruby - 从工人(红宝石)那里获得运行工作sidekiq

我怎样才能从工人那里得到工作?

我有 jid 但工作不在队列中,因为仍在运行......

0 投票
0 回答
189 浏览

ruby-on-rails - sidekiq 工作人员在运行一段时间后卡住了

我最近一直在测试一些代码,我发现自己处于一个奇怪的境地。让我试着解释一下。我有多段代码(超过 500 段)执行以下操作: - 解析字符串 - 解析 JSON - 解析数组 - 通过 Faraday 运行 HTTP/HTTPS 请求

基本上,它们都在后台协同工作以提取和解析数据。

我有一个 30/40 的 sidekiq 工作人员,他们工作得很好。在某些时候,工人会随机(但通常在 1 天后)卡住。它们通常需要 1 秒到 1 分钟,在某些时候,HTTP/HTTPS 工作人员会卡住并持续很长时间,系统会变得越来越慢。

我从不同的地方读过: - https://github.com/mperham/sidekiq/issues/862(HenleyChiu于 2013 年 10 月 5 日发表评论 - 以及其他一些) - https://github.com/mpowered/sidekiq-唠叨

有时 Sidekiq 工作人员会卡住,如果发生这种情况,人们正在编写代码(或黑客)来重新启动 Sidekiq。你们是否发现 Sidekiq 存在同样的问题,尤其是在后台作业与 HTTP/HTTPS 请求相关的情况下?

所以我的问题是:

  • 有没有人发现他/她自己也有类似的情况?你做了什么?
  • 在后台作业中是否有办法确保所有 HTTP/HTTPS 连接都被丢弃?例如,我可以确保使用以下代码(最后)关闭所有 MYSQL 连接。
  • 实际上是 HTTP/HTTPS 可能会在 Sidekiq 中产生问题吗?有没有办法杀死挂起的 HTTP/HTTPS 连接?不确定在 Ruby 中使用 Timeout 并不理想......

任何人都有一些想要分享的代码示例或关于如何修复它的一些想法?

非常感谢您,我期待您的回音。

0 投票
1 回答
240 浏览

sidekiq - 如何在公共 0.0.0.0 上启动 Sidekiq Web UI?

为了启动sidekiq web UI,我目前正在做:

但是,一旦 puma 启动,它只会听localhost.

我怎样才能运行它http://0.0.0.0:9293

谢谢

0 投票
0 回答
414 浏览

ruby-on-rails - perform_async Sidekiq 问题

假设我们有 100 个对象要发送到 Sidekiq 来处理一些数据。写入每 24 小时运行一次的 rake,并拾取对象列 sidekiq_processed 为 false 的所有 100 个对象,并将其发送到 Sidekiq 队列进行处理。在 Sidekiq 处理完数据后,对象的 sidekiq_processed 列被更新为 true,以便下次调度 rake 时不会拾取该对象。

我面临的问题是一些对象在说 20 天后仍然有 sidekiq_processed 为假。我还在 perform 函数中实现了日志记录,以记录我的对象所在的每个事件/状态。

假设还有 20 个对象没有得到处理。检查了他们的日志,没有找到这些对象的日志。在第 21 天触发 new.perform 后,所有对象最终都被处理完毕。

我不想手动触发它们有没有一种方法可以检查为什么 Sidekiq 没有使用我的队列对象。

0 投票
1 回答
443 浏览

ruby-on-rails - 当sidekiq崩溃时如何重新启动它?

我通过以下方式启动了sidekiq

有时,Sidekiq 被压垮了,busy=0 并且 enqueue > 0。

如何设置 sidekiq 在压碎/停止后重新启动?

0 投票
1 回答
662 浏览

ruby-on-rails - 如何跟踪已被杀死的 sidekiq 作业?

我正在寻找一种方法来跟踪突然被杀死的 sidekiq 工作。sidekiq 中是否有 on_delete 类型的操作(我在文档中找不到任何操作)我可以实现,以便在作业被突然删除时执行一些过程。

我查看了 sidekiq ruby​​ gem 文档,但找不到解决方案。

我正在使用 sidekiq v5.0.4

0 投票
2 回答
1161 浏览

sidekiq - Sidekiq web 返回一个带有空正文的空白页面

我正在尝试访问 sidekiq 网站,但我得到一个空白页面。没有错误或消息。

我正在使用以下环境:

如果我在没有 zeitwerk 的情况下将 sidekiq 降级到 5.2.7 版,我也不会从 sidekiq 网站获得任何内容。所以这一定是一个普遍的问题。

如果我访问 sidekiq 网页,则会返回一个空白页面/html 正文。瘦显示以下请求:

任何想法表示赞赏

0 投票
2 回答
1013 浏览

ruby-on-rails - 如何为我的 Rails 应用程序扩展 sidekiq 性能。需要每秒运行 100 个 sidekiq 作业

我有一个要求,我应该能够每秒运行 100 个 sidekiq 作业。我将服务器容量增加到 8 个 CPU,并创建了 4 个 sidekiq 进程,但它仍然每分钟提供 50 个作业。我不确定我在哪里失踪