seefan / gossdb

ssdb client for go with pool surport
MIT License
131 stars 47 forks source link

最多创建3个pool就无法使用了 #60

Closed RelicOfTesla closed 4 years ago

RelicOfTesla commented 4 years ago
// gossdb 1.1.3  + ssdb-server-1.9.0.exe

for i := 0; i < 10; i++ {
        p, err := gossdb.NewPool(&conf.Config{
            Password: cfg.SSDB.Password,
            Host:     cfg.SSDB.Ip,
            Port:     cfg.SSDB.Port,
            //RetryEnabled: true,
        })
        c, err := p.NewClient()   
        checkErr(err)
        if !c.Ping() {   // 第三次时,就死在这里
            checkErr(errors.New("aaa"))
        }
    }
seefan commented 4 years ago

建议你把错误打印出来看一下,例如panic(goerr.Error(err).Trace())。 同时可以检查机器上最大打开的连接数,看是不是这个限制,导致无法创建新连接。 默认配置一个连接池坐创建100个连接。

RelicOfTesla commented 4 years ago

panic: Text: client recv error
Trace:read tcp 127.0.0.1:54335->127.0.0.1:8888: i/o timeout ///

// ssdb-server-1.9.0.exe

for i := 0; i < 300; i++ {
        scli := ssdbclient.NewSSDBClient((&conf.Config{
            Password: cfg.SSDB.Password,
            Host:     cfg.SSDB.Ip,
            Port:     cfg.SSDB.Port,
        }).Default())
        checkErr(err)
        cli := client.NewClient(scli, false, nil)
        err := cli.Start()
        checkErr(err)
        fmt.Println(i)
        _, err = cli.Do("version")
        if err != nil { // 第48(i=47)次时,就死在这里
            panic(goerr.Error(err).Trace())
            checkErr(err)
        }
    }
RelicOfTesla commented 4 years ago

ssdb windows 版的问题。。。win版只支持四十几个链接。。。pool默认太多链接,会有冲突。。。

zut commented 4 years ago

@RelicOfTesla ssdb不建议在 windows上面使用,官网也不建议吧

seefan commented 4 years ago

默认100主要是考虑到实际使用中,大多是linux下的,window下是不建议生产使用的,可以用来学习。