Cannot write to null outputStream 导致 Session也无法注销

提问:

  • nebula 版本:3.5.0
  • 部署方式:分布式
  • 是否上生产环境:Y
  • 客户端 Java
  • 问题的具体描述:
    线上我们使用的是NebulaPool创建的session,自己用threatlocal管理session;有两个处理业务,一个QPS较高,一个QPS较低;QPS较低的业务经常出现查询出错报 Cannot write to null outputStream,然后我们业务中如果报错会去调用session的release,这时候由于tcp连接异常了其实logout不了;但是服务端的session连接信息却还存在,比如客户端的tcp连接只有40个,服务端的session却有400个,而且session无法注销;会导致session记录过多超限后报错。想问下内部是否有定期注销tcp连接的逻辑?

可以在 graphd 的配置里修改 session_idle_timeout_secs 的配置,缩短不活跃 session 过期时间

或者在 qps 较低的业务中,session 使用后即释放,下次需要的时候再创建

嗯,有想到你说的第二种解决方案,不过还是想知道流关闭和连接断开的原因,我理解tcp连接不去主动释放,进程没有崩溃的话应该是一直连接的

可能是 session 长时间保持活跃的机制有瑕疵,网络波动导致 session 长连接断开无法重连然后就报错了

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