草庐IT

sidekiq-superworker

全部标签

redis - Sidekiq 客户端错误处理

我想知道是否有办法解决redis连接错误,以便我可以使用替代数据存储来推送作业。我们使用客户端中间件来设置当前线程用户等,因此拯救.perform_async不会有太大帮助。此外,客户端中间件似乎不支持错误处理。有没有一种解决方法可以解决客户端中间件内的redis连接错误?我能想到的方法是对redis实现心跳,设置一个全局标志以将作业推送到中间件内的替代数据存储区。感谢您的帮助。 最佳答案 在config/initializers/sidekiq.rb中:classSidekiqErrorHandlerdefcall(worker_

ruby-on-rails - Sidekiq Redis 数据库 key 随时间增加

我目前在生产环境中使用Sidekiq和我的Rails应用程序以及ElasticCacheRedis数据库。我最近注意到,在使用AWS工具监控CurrItems指标时,我看到项目的数量几乎以类似阶梯的方式随着时间的推移逐渐增加:但是,当我在Sidekiq仪表板中查看队列中的作业时,我根本看不到任何备份。我看到队列中有0个作业,0个忙,0个计划。阶梯式增长似乎发生在每天非常特定的时间(就在一天结束时),这让我认为这可能与我运行的计时作业/发条进程有关。但是,我只有4个工作每天运行一次,而且在那个时间甚至接近那个时间都没有运行。不过,为了更好的衡量,这里是我的clock.rb文件(为了简单起

ruby-on-rails - Sidekiq Redis 数据库 key 随时间增加

我目前在生产环境中使用Sidekiq和我的Rails应用程序以及ElasticCacheRedis数据库。我最近注意到,在使用AWS工具监控CurrItems指标时,我看到项目的数量几乎以类似阶梯的方式随着时间的推移逐渐增加:但是,当我在Sidekiq仪表板中查看队列中的作业时,我根本看不到任何备份。我看到队列中有0个作业,0个忙,0个计划。阶梯式增长似乎发生在每天非常特定的时间(就在一天结束时),这让我认为这可能与我运行的计时作业/发条进程有关。但是,我只有4个工作每天运行一次,而且在那个时间甚至接近那个时间都没有运行。不过,为了更好的衡量,这里是我的clock.rb文件(为了简单起

ruby-on-rails - Heroku Puma Sidekiq 运行 167% crititcal r14 内存配额在 3 个 web dynos 上超过一位访客

我在Heroku上的3个测功机(标准1x)上运行Puma3.4、Rails4.2.6、Sidekiq4.2.2、RedisMini。我正在进行简单的Beta测试,我似乎无法优化我的puma-dyno情况。当一个用户在网站上时,我会收到高响应时间警报和临界内存配额警报(我正在使用NewRelic进行监控)。我已经添加了PumaWorkerKiller来尝试对此进行诊断,但没有帮助。我使用环境变量(最大线程数、并发性等)设置了所有内容,并且我在互联网上搜索了如何配置。我在database.yml、sidekiq.rb、puma.rb、puma_worker_killer.rb和sideki

ruby-on-rails - Heroku Puma Sidekiq 运行 167% crititcal r14 内存配额在 3 个 web dynos 上超过一位访客

我在Heroku上的3个测功机(标准1x)上运行Puma3.4、Rails4.2.6、Sidekiq4.2.2、RedisMini。我正在进行简单的Beta测试,我似乎无法优化我的puma-dyno情况。当一个用户在网站上时,我会收到高响应时间警报和临界内存配额警报(我正在使用NewRelic进行监控)。我已经添加了PumaWorkerKiller来尝试对此进行诊断,但没有帮助。我使用环境变量(最大线程数、并发性等)设置了所有内容,并且我在互联网上搜索了如何配置。我在database.yml、sidekiq.rb、puma.rb、puma_worker_killer.rb和sideki

ruby-on-rails - Sidekiq 中的民主队列

用户可以创建一个包含多个任务的Project对象。当用户告诉项目执行时,所有这些任务都会被放入Sidekiq的默认队列中。问题是:如果用户创建一个包含1000个任务的项目并点击execute按钮,所有这1000个任务都会被放入队列中。如果在那之后,另一个用户创建了一个只有一个任务的项目,当他点击执行这个项目时,它的唯一任务被放在行尾。我希望后台进程以更民主的方式工作。如果每个项目都有自己的队列,那么第二个项目中的一个任务可能会在1000个任务队列结束之前执行。为此,我需要为每个项目单独设置队列,而且应该是动态创建的。我正在尝试使用以下而不是perform_async来完成此操作:Sid

ruby-on-rails - Sidekiq 中的民主队列

用户可以创建一个包含多个任务的Project对象。当用户告诉项目执行时,所有这些任务都会被放入Sidekiq的默认队列中。问题是:如果用户创建一个包含1000个任务的项目并点击execute按钮,所有这1000个任务都会被放入队列中。如果在那之后,另一个用户创建了一个只有一个任务的项目,当他点击执行这个项目时,它的唯一任务被放在行尾。我希望后台进程以更民主的方式工作。如果每个项目都有自己的队列,那么第二个项目中的一个任务可能会在1000个任务队列结束之前执行。为此,我需要为每个项目单独设置队列,而且应该是动态创建的。我正在尝试使用以下而不是perform_async来完成此操作:Sid

redis - 通过字符串匹配批量删除 Sidekiq 作业

我有一个邮件队列。我想删除该队列中的所有Newsletter作业,只留下sign_up邮件。我基本上需要找到包含子字符串“Newsletter”的工作。我如何在Rails控制台或redis-cli中执行此操作? 最佳答案 据我所知,您基本上只想将其中包含字符串“Newsletter”的键作为单个事务自动删除。这样做的方法是:redis-cli-n[some_db]-h[some_host_name]EVAL"returnredis.call('DEL',unpack(redis.call('KEYS','*'..ARGV[1]..'

redis - 通过字符串匹配批量删除 Sidekiq 作业

我有一个邮件队列。我想删除该队列中的所有Newsletter作业,只留下sign_up邮件。我基本上需要找到包含子字符串“Newsletter”的工作。我如何在Rails控制台或redis-cli中执行此操作? 最佳答案 据我所知,您基本上只想将其中包含字符串“Newsletter”的键作为单个事务自动删除。这样做的方法是:redis-cli-n[some_db]-h[some_host_name]EVAL"returnredis.call('DEL',unpack(redis.call('KEYS','*'..ARGV[1]..'

redis - 如何在重启前通过 capistrano 删除 sidekiq 特定的 redis 缓存

在Rails代码部署中,sidekiq重新启动,我们希望在重新启动之前从实例中删除sidekiq特定的redis缓存。这就是我们想要实现的1.sidekiq:停止2.连接sideiq指向的远程redis3.选择数据库(比如选择1)。3.删除缓存(比如flushall)我应该如何通过Capistrano自动执行此操作。 最佳答案 您可以通过直接调用Sidekiq队列或在步骤#3中它们自己的Rake任务来刷新Sidekiq队列Sidekiq::ScheduledSet.new.clear#clearthescheduledqueue..