使用sessionPool仍然session过期

nebula版本:3.2.1
部署方式:单机
安装方式:RPM

  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘 SSD
    • CPU、内存信息:16core 64G
  • 问题的具体描述
    使用java客户端(版本3.3.0),具体api参照官方文档使用sessionPool,但是运行一段时间后仍然发生session过期现象,报java.net.SocketException: Broken pipe (Write failed)错误
    nebula-graphd日志中有ClientSession xxx has expired的信息。
    请问解决方案是什么呢

顶一下,运行一段时间准确来说是三天左右,期间nebula的各项服务并没有异常

试试把 timeout 改下

好的,改了之后服务需要重启吗?
我疑问的点主要是,根据官方文档,使用sessionPool会自动管理session,不理解为什么过期之后不会自动创建新的session

需要,它不支持动态修改。

文档中的sessionPool会自动创建session和自动释放session,且在执行过程中会针对session异常进行session重建和请求重试。

但我试了下session过期的情况,java thrift 是会执行异常的,此时拿不到执行的response,也就没法判断session的情况。我们先几个issue看下。
你可以先在客户端把healthCheckTime调小,小于nebulagraph 的session过期时间,让sessionPool的健康检测把失效session移除。

感谢!我试一下看看

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