1

我在 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...)
    },
}
4

1 回答 1

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
},
于 2018-04-18T23:18:00.160 回答