Nebula Java SDK 连接 java.net.SocketException: Broken pipe (Write failed)

  • nebula 版本:3.0.1
  • nebula-java版本: 3.0.0
  • 部署方式:单机
  • 安装方式:源码编译
  • 是否为线上版本:Y
  • 硬件信息
    4 vCPU 16 GiB
  • 问题描述
    每天早上通过java连接Nebula就会报错,重启java应用之后就正常了.
  • 连接池配置
    reconnet = true
    其他均保持默认

报错信息

com.vesoft.nebula.client.graph.exception.IOErrorException: java.net.SocketException: Broken pipe (Write failed)
	at com.vesoft.nebula.client.graph.net.SyncConnection.executeWithParameter(SyncConnection.java:192) ~[client-3.0.0.jar!/:na]
	at com.vesoft.nebula.client.graph.net.Session.executeWithParameter(Session.java:113) ~[client-3.0.0.jar!/:na]
	at com.vesoft.nebula.client.graph.net.Session.execute(Session.java:78) ~[client-3.0.0.jar!/:na]
	at com.vesoft.nebula.client.graph.net.SessionWrapper.execute(SessionWrapper.java:32) ~[client-3.0.0.jar!/:na]
	at com.gc.nebula.datasource.Session.execute(Session.java:25) ~[nebula-graph-0.1.2.jar!/:na]
	at com.gc.nebula.core.NebulaTemplate.execute(NebulaTemplate.java:71) ~[nebula-graph-0.1.2.jar!/:na]
	... 27 common frames omitted

有错误发生时服务的日志吗? 这个报错就是客户端和服务端的网络连接断了

报错的日志是:

com.vesoft.nebula.client.graph.exception.IOErrorException: java.net.SocketException: Broken pipe (Write failed)
	at com.vesoft.nebula.client.graph.net.SyncConnection.executeWithParameter(SyncConnection.java:192) ~[client-3.0.0.jar!/:na]
	at com.vesoft.nebula.client.graph.net.Session.executeWithParameter(Session.java:113) ~[client-3.0.0.jar!/:na]
	at com.vesoft.nebula.client.graph.net.Session.execute(Session.java:78) ~[client-3.0.0.jar!/:na]
	at com.vesoft.nebula.client.graph.net.SessionWrapper.execute(SessionWrapper.java:32) ~[client-3.0.0.jar!/:na]
	at com.gc.nebula.datasource.Session.execute(Session.java:25) ~[nebula-graph-0.1.2.jar!/:na]
	at com.gc.nebula.core.NebulaTemplate.execute(NebulaTemplate.java:71) ~[nebula-graph-0.1.2.jar!/:na]
	... 27 common frames omitted

知道问题是客户端和服务端的连接断开了,但是是什么原因导致的呢?

需要服务端 graph storage meta 服务的日志 这是客户端的报错

nebula服务日志

看下graph info error 完整日志
最好是错误现场的 上面的日志包含了好几天的

nebula-7.4~7.5-stderr-log.rar (5.3 MB)
这是7.04~7.05早上的日志


还需要其他的日志嘛

贴一下各服务.INFO .ERROR 日志, 软连接指向的是最新的

log_nubula.zip (8.7 MB)

这个可能是session过期了吧,但是java程序中的过期session还在的,这个时候链接已经断了啊再使用当然报错了

那这种问题怎么解决呢?我使用的是官方的SessionManager,需要配置什么吗?

我只是猜测是这个原因,你要验证一下呗,如果是的话需要把这个异常捕获,然后把session 给release掉重新获取session执行