【问题标题】:redis: dial tcp [REDIS ADDRESS] connect: connection refusedredis:拨号 tcp [REDIS ADDRESS] 连接:连接被拒绝
【发布时间】:2018-09-29 07:41:01
【问题描述】:

我在 docker 中使用 redigo。我有一个处理传入事件并使用 redis 进行速率限制的服务器。每 100k+ 个连接中就有一个,所以我收到以下错误:

redis: dial tcp IP ADDRESS: connect: connection refused

配置都在使用 docker-compose 的 docker 内部。我有哨兵向我发送这些错误,我想知道是否有任何调整/设置可以消除/减少此错误

我的 redigo 配置是

redis := &redis.Pool{
    MaxActive: idleConnections,
    MaxIdle:   idleConnections,
    Wait:      true,
    Dial: func() (redis.Conn, error) {
        return redis.Dial("tcp", address, options...)
    },
}

【问题讨论】:

    标签: docker go redis redigo


    【解决方案1】:

    您可以使用某种指数退避重试拨号:

    Dial: func() (redis.Conn, error) {
        c, err := redis.Dial("tcp", address, options...)
        for retries := 0; err != nil && retries < 5; retries++ {
            time.Sleep((50 << retries) * time.Millisecond)
            c, err = redis.Dial("tcp", address, options...)
        }
        return c, err
    },
    

    【讨论】:

    • 谢谢,你能想到为什么我们可能会从 redis 中得到 conn 拒绝吗?只是网络噪音?
    猜你喜欢
    • 2018-10-01
    • 2016-11-20
    • 2021-01-24
    • 2017-07-10
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2021-10-22
    相关资源
    最近更新 更多