【问题标题】:Sidekiq Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 on productionSidekiq Redis::CannotConnectError:在生产环境中连接到 127.0.0.1:6379 上的 Redis 时出错
【发布时间】:2019-08-08 23:13:22
【问题描述】:

config/initializers/sidekiq.rb

Sidekiq.configure_server do |config|
   config.redis = { :url => 'redis://192.xxx.xxx.xx:6379/0' }
end

当我这样做时在生产控制台中

ActivationWorker.perform_async(877459)

报错

Redis::CannotConnectError: 连接到 127.0.0.1:6379 上的 Redis 时出错 (Errno::ECONNREFUSED)

甚至 sidekiq.log 打印

Booting Sidekiq 5.1.3 with redis options {:url=>"redis://192.xxx.xxx.xx:6379/0", :id=>"Sidekiq-server-PID-646"}

【问题讨论】:

  • redis 和 rails 在同一台服务器上吗?如果没有,请确保您在其配置中允许连接。
  • 独立服务器@RocKhalil

标签: ruby-on-rails ruby redis sidekiq


【解决方案1】:

需要注意的是,要配置 Redis 的位置,您 必须同时定义 Sidekiq.configure_server 和 Sidekiq.configure_client 块

Straight from the docs

所以也添加到您的config/initializers/sidekiq.rb

Sidekiq.configure_client do |config|
   config.redis = { :url => 'redis://192.xxx.xxx.xx:6379/0' }
end

还有来自文档的重要说明:

注意:配置散列必须具有符号化的键。

注意:未知参数被传递给底层 Redis 客户端,因此 驱动支持的任何参数都可以放入Hash中。

【讨论】:

    【解决方案2】:

    根据 cmets,我们知道 Redis 在单独的服务器上。

    Rails 服务器

    在初始化器中创建一个文件:config/initializers/sidekiq.rb:

    Sidekiq.configure_server do |config|
      config.redis = {
        url: "redis://192.xxx.xxx.xxx:6379/12"
      }
    end
    
    Sidekiq.configure_client do |config|
      config.redis = {
        url: "redis://192.xxx.xxx.xxx:6379/12"
      }
    end
    

    Redis 服务器

    • 编辑/etc/redis/redis.conf
    • 更新您的绑定端口
    • 示例:bind 192.xxx.xxx.xxx
    • 重启redis

    【讨论】:

      猜你喜欢
      • 2018-08-31
      • 1970-01-01
      • 2019-01-17
      • 2016-04-16
      • 2017-07-06
      • 2021-07-10
      • 2013-10-14
      • 2017-05-16
      • 2020-08-27
      相关资源
      最近更新 更多