为什么redis pub read io超时?

xpcnnkqh  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(368)

我是新来使用redis的。我遇到了io超时问题。代码如下:

func main()  {
    client := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379",
        Password: "", // no password set
        DB:       0,  // use enter code heredefault DB
        WriteTimeout: time.Millisecond * 100,
        ReadTimeout: time.Millisecond * 100,
        PoolSize: 20,
    })

    for {
        _, err := client.Publish("ch", strings.Repeat(strconv.Itoa(rand.Int()), 10)).Result()
        if err != nil {
            fmt.Println(err)
        }
    }
}

几分钟后,将出现超时问题。就像this:read tcp [::1]:54099->[::1]:6379:i/o超时。这是因为没有潜艇还是潜艇速度慢?请帮帮我。谢谢!

a11xaf1n

a11xaf1n1#

100毫秒的超时是相当激进的
在go redis中,默认超时为3秒,这不是不可想象的,因为给定一个大样本(如您所说运行几分钟),一些发布命令可能需要超过100毫秒的时间。这取决于您的服务器特性以及是否有其他客户端使用同一服务器。
我建议您使用redis benchmark实用程序来了解您从redis示例获得的性能,看看您的超时与publish命令的p99往返时间有多接近
https://redis.io/topics/benchmarks

相关问题