[nebula3] 使用一段时间后报错 No valid connection in the idle queue and connection number has reached the pool capacity

系统使用一段时间后突然报
No valid connection in the idle queue and connection number has reached the pool capacity

补充下具体的版本号嘞:thinking:

github.com/vesoft-inc/nebula-go/v3 v3.0.0

已经出现好多次了,每次都是重启服务就好

补充说明:
1、肯定不是并发过高,当时只有一两个请求,且一开始并发压测没有问题
2、使用后也关闭了session
graphSession, err := utils.NebulaGraphPool.GetNebulaGraphIdMappingPoolSession(utils.NebulaSessionAuth{}) if err != nil { utils.Logger.Error("初始化图数据库链接失败", zap.String("logId", jzlLogId), zap.String("businessId", businessId), zap.Error(err)) return "", err } defer graphSession.Release()

初充说明:
另外一个服务请求比较多,从来没出现过问题

当前服务 我看日志距离上一次请求 是13小时,然后就报错了

补充:连接配置使用的nebula默认配置


默认配置 timeout 0

这个应该是由于运行过程中发生过一些错误触发了重连, 但是保存在 idleQueue 里面的不可用的 connection 没有被定期清除, 所以占用了连接数导致, 目前的话只能在调用层重新启动client或者把 maxConnPoolSize 设大一点来降低问题出现频率

这个解释有点牵强呀
1、我的程序没有其他错误日志
2、两个服务是一样的,只是一个请求多,一个请求少,请求多的没有问题
3、请求少的两次请求之间比较长了

您也说了加大 maxConnPoolSize 只是降低问题出现频率,意思是还会出现,这是不可接受的呀

而且你们应该也要查一下 为什么没被清除

最初的 design 是觉得连接的不可用可能是暂时的, 之后会恢复, 所以还村在队列里, 减少创建销毁的开销. 你可以认为这是一个bug, 在下次发版中会 fix

1 个赞


看下这么改应该没问题,ping不通了就移除

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。