-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pool is busy,can not get new client in 5 seconds,wait count is 1 #59
Comments
暂时没有发现你说的情况,你可以在显示错误信息时,调用goerr.Error(err).Trace()来显示更多的内容,我们可以根据仔细的信息来分析。 |
详细错误是: 本地测试, 基本没有并发.配置也是默认的. c := &conf.Config{
Host: host,
Port: port,
AutoClose: true,
} client info信息我打印出一些. 请看最后的回复 |
把你的代码发我一份吧,我测试一下 |
在一个项目中用了. 无法单独出来发. |
有更详细的信息了: 特征是:
|
我刚测试了一个小时,10个纯程在跑,并没有出现你说的问题。 |
@seefan 用了GetClient (是调用gossdb.Client()) 请看代码: func HSet(name, key, value interface{}) error {
name2, err := cc(name)
if err != nil {
return err
}
key2, err := cc(key)
if err != nil {
return err
}
b, err := xx.Pack(value)
if err != nil {
return err
}
return gossdb.Client().HSet(name2, key2, b)
}
func HGetTo(name, key, value interface{}) error {
name2, err := cc(name)
if err != nil {
return err
}
key2, err := cc(key)
if err != nil {
return err
}
xx.IsPointer(value)
vPack, err := gossdb.Client().HGet(name2, key2)
if err != nil {
xlog.Error(goerr.Error(err).Trace())
return err
} else if len(vPack.Bytes()) == 0 {
return ErrNotFound
}
return xx.UnpackTo(vPack.Bytes(), &value)
}
|
1、我看每次出错附近都这类似这样[WARN] [elapsed > 100ms]的提示,能大概描述一下这个错误是什么吗。 Trace:pool is busy,can not get new client in 5 seconds,wait count is 1 |
1 这个错误是每个请求的处理时间,你可以忽略。 2没有长时间连接的业务。 3 大约几百KB?我可以具体打印出来看看。而且是slob/zstd 压缩过的。 |
请问你是如何判断回收的? |
通过Avaliable来控制,它是一个队列,我会把连接的位置放到队列里管理 |
我看了一段时间log, 还没能解决. |
看你说的情况,感觉是是autoclose在释放时有问题,我还在分析 |
使用2天情况来看, 没有出现了 |
@seefan 最近一次的更新, 我看到 closeClient的更新, 是不是回收方面原来有 BUG, (自动回收) |
只是调整回收后复用的规则,把原来的平均复用改成优先头部利用了,不影响回收。 自动回收方面你出现的问题还没有找到原因。 另外我看到你有Close1和Close2两处打印,能告诉我一下大概的位置么? |
@seefan 最近我关闭AutoClose,再也没有出现过了问题了, 所以应该是 AutoClose的问题。 我目前的做法是, 做了一个操作(例如Hset),就关闭。 |
错误: Trace:pool is busy,can not get new client in 5 seconds,wait count is 1
我应该如何来解决这个问题?
谢谢
The text was updated successfully, but these errors were encountered: