-
nebula 版本:3.0.0
-
部署方式:分布式
-
安装方式:RPM
-
是否为线上版本:Y
-
硬件信息
- 磁盘SATA
- CPU、内存信息 三台虚拟机:都是4核、8g内存
-
问题的具体描述
主要是进行查询:通过获取子图获取血缘关系,因为测试没啥问题,直接发布了,但是时间久了(也就是过了一个晚上),他会显示管道破裂,需要重启才能继续运行 -
相关的 meta / storage / graph info 日志信息(尽量使用文本形式方便检索)
在服务器上 logs 日志下没有出现error和warnning日志
代码
private val log: Logger = LoggerFactory.getLogger(NebulaUtil.getClass)
private var pool: NebulaPool = null
private var session: Session = null
def getPool(): NebulaPool = {
pool
}
//初始化失败 session 为空
def init(host: String, port: Int, maxConnSize: Int, user: String, pass: String): Boolean = {
try{
var isSuccess = false
pool = new NebulaPool
// 配置
val nebulaPoolConfig = new NebulaPoolConfig
nebulaPoolConfig.setMaxConnSize(maxConnSize)
// 初始化ip和端口
val addresses = util.Arrays.asList(new HostAddress(host, port))
val initResult = pool.init(addresses, nebulaPoolConfig)
//session赋值
if (!initResult){
log.error("pool init failed.")
}else{
session = pool.getSession(user, pass, false)
isSuccess = true
}
isSuccess
} catch {
case e : Exception => log.error("pool init failed.")
false
}
}
//TODO query: 创建空间、进入空间、创建新的点和边的类型、插入点、插入边、执行查询
def executeResultSet(query: String): ResultSet = {
val resp: ResultSet = session.execute(query)
if (!resp.isSucceeded){
log.error(String.format("Execute: `%s', failed: %s", query, resp.getErrorMessage))
System.exit(1)
}
resp
}
//获取ResultSet中的各个列名及数据
//_1 列名组成的列表
//_2 多row组成的列表嵌套 单个row的列表 包含本行每一列的数据
def getInfoForResult(resultSet: ResultSet): (util.List[String], util.List[util.List[Object]]) = {
//拿到列名
val colNames: util.List[String] = resultSet.keys
//拿数据
val data: util.List[util.List[Object]] = new util.ArrayList[util.List[Object]]
//循环获取每行数据
for (i <- 0 until resultSet.rowsSize) {
val curData = new util.ArrayList[Object]
//拿到第i行数据的容器
val record = resultSet.rowValues(i)
import scala.collection.JavaConversions._
//获取容器中数据
for (value <- record.values) {
if (value.isString) curData.add(value.asString)
else if (value.isLong) curData.add(value.asLong.toString)
else if (value.isBoolean) curData.add(value.asBoolean.toString)
else if (value.isDouble) curData.add(value.asDouble.toString)
else if (value.isTime) curData.add(value.asTime.toString)
else if (value.isDate) curData.add(value.asDate.toString)
else if (value.isDateTime) curData.add(value.asDateTime.toString)
else if (value.isVertex) curData.add(value.asNode.toString)
else if (value.isEdge) curData.add(value.asRelationship.toString)
else if (value.isPath) curData.add(value.asPath.toString)
else if (value.isList) curData.add(value.asList.toString)
else if (value.isSet) curData.add(value.asSet.toString)
else if (value.isMap) curData.add(value.asMap.toString)
}
//合并数据
data.add(curData)
}
(colNames, data)
}
终端输出
日志
最后烦请删掉本模版和问题无关的信息之后,再提交提问,Thx