Sidekiq perform_async不排队一些工作

时间:2016-01-08 18:35:07

标签: ruby heroku redis sidekiq

目前有一个工作人员调用perform_async,它随机排队作业。它有效的10次中有9次......但它偶尔也没有排队工作。作业ID已创建,但我们从未看到它被排队并且它不会运行。当我们注意到这种情况发生时,我们只需在heroku控制台中重新运行该作业,它就会运行。当作业实际运行时,它工作正常。问题是它并不总是运行。

一些统计数据:rails 4.1.11,ruby 2.2.3,sidekiq 4.0.2,redis 2.8.21 美洲狮和heroku

来自sidekiq可靠性维基,它指出有三个与可靠性相关的问题:将作业发送到redis,从redis中获取作业以及安排。

我们无法确定为什么这份工作没有在redis中排队。难倒并且希望有人可以就如何提出建议:

  1. 监控工作是否入队的最佳方法?使用sidekiq api是最好的方法吗?

  2. 为什么工作可能无法成为redis的一部分原因(范围是什么)?

  3. 确保未来可靠性的最佳方法是什么?

  4. 如果工作没有进入redis,为什么sidekiq不会认识到这一点并给我们提供某种错误/反馈。

  5. 如果它有帮助,请参阅我们的RedisToGo配置:

    # = General     
    port 10655
    databases 1
    
    loglevel notice
    logfile /mnt/redis.306247.log
    
    # = Security 
    requirepass xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    
    # = Limits 
    maxmemory 52428800
    maxmemory-policy volatile-lru
    maxmemory-samples 3
    
    maxclients 128
    timeout 150
    
    dir /home/redis/10655
    
    appendonly yes
    appendfilename appendonly.aof
    appendfsync everysec
    no-appendfsync-on-rewrite no
    
    hash-max-ziplist-entries 64
    hash-max-ziplist-value 512
    
    list-max-ziplist-entries 512
    list-max-ziplist-value 64
    
    set-max-intset-entries 512
    
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    
    activerehashing yes
    
    # = LUA Scripting 
    lua-time-limit 5000
    
    # = Client Limits 
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    

    提前致谢。

0 个答案:

没有答案