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的各项服务并没有异常
好的,改了之后服务需要重启吗?
我疑问的点主要是,根据官方文档,使用sessionPool会自动管理session,不理解为什么过期之后不会自动创建新的session
文档中的sessionPool会自动创建session和自动释放session,且在执行过程中会针对session异常进行session重建和请求重试。
但我试了下session过期的情况,java thrift 是会执行异常的,此时拿不到执行的response,也就没法判断session的情况。我们先几个issue看下。
你可以先在客户端把healthCheckTime调小,小于nebulagraph 的session过期时间,让sessionPool的健康检测把失效session移除。