SessionPool的session感觉不会释放



大佬,帮忙给看看,一个后端项目,创建session会失败,配置文件默认的max_sessionper_ip_per_user,已经从300提升到1000了,压测的时候,还是会超,100个并行度去压测的

我看SessionPool去执行语句的时候,是会释放session的,不清楚session数会一直增长呢

1.是否重启过项目,重启之前的session还在的,你需要登录console,执行show sessions查看并kill之前不用的session
2.SessionPool执行releaseSession操作只是归还到你的池里面,并非去close你的session。只有出现执行异常(非语法错误等)才会主动去关闭session,执行session.release()操作

1 个赞



因为一个图片截不开,前面那个图截的不全,最后是判断了一下session是不是空,然后给释放了,每次执行execute方法,是会释放get到的session

不是出异常才会去释放,但是现在session数一直涨,很快就会突破配置文件里面配置的数量,感觉有点不太正常


看这里哈,成功或者另外两种错误就会返回到池里面,如果每次执行完就释放session,那还使用池干啥呢

你的sessionPool的配置是怎么配的?


sessionPool是这样配置的,我知道是返回到池子里,返回池子里了,才能重复使用,我现在是不太清楚为什么会超了“nebula-graphd.conf”里面的max_sessions_per_ip_per_user这个配置的值,池子最大设置的200,应该不会超了这个上限吧

这个配置是针对同一个ip下面的限制,有如下问题:
1.是否存在多次重启
2.是否存在单台机器部署多个应用
3.是否存在new了多个sessionPool的实例,并非是全局共享的

1 个赞

是的,大佬,确实单个IP下多次并发调用,因为用一个机器在做压测;是否多次重启,这个情况应该是没有;可能存在3说的这个问题,new了多个sessionPool实例,我再检查检查,谢谢! :+1:

还有个问题啊,大佬,我的nebula是3.6的版本,


现在这个设置默认的是8小时,一晚上没有调用的话,第二天会话池子里的session都过期了,我后端项目怎么才能激活一下session,重新发布应用有时候不太现实

SessionPool有Health checker,会定期执行yeild 1保持连接的可用性

好的,大佬,我看看。用了java-client的NebulaPool,现在好使了

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