neo4j写入时间长问题解决
部署了三套neo4j集群,有一套上面总是出现写入超时,最长要接近一分钟,结果前端超时。
使用了几种方案尝试解决:
1、尝试减少事务数量
原实现中事务使用过多,很多不重要的查询也使用事务
把大部分的命令执行由session.WriteTransaction修改为session.Run
2、尝试创建索引
对于数据的查找,如果没有创建索引就会执行遍历,数据量大的话会比较慢(我的环境中数据量很小)
CREATE INDEX [INDEX_NAME] FOR (n:Label) ON (n.property)
3、执行命令前增加verify
这个完全没有想到,在一个环境上打开neo4j客户端log后发现执行命令前会提示已断链,估计是被老化了。
打开neo4j log的方法(go客户端):
type gdbcLogger struct {}func (l *gdbcLogger) Error(name string, id string, err error) {log.Errorf("[neo4j] name[%s] id[%s] err[%s]", name, id, err)
}func (l *gdbcLogger) Warnf(name string, id string, msg string, args ...interface{}) {log.WithFields(log.Fields{"name": name, "id": id}).Warnf(msg, args...)
}func (l *gdbcLogger) Infof(name string, id string, msg string, args ...interface{}) {log.Infof("[neo4j] name[%s] id[%s]", name, id)log.WithFields(log.Fields{"name": name, "id": id}).Infof(msg, args...)
}func (l *gdbcLogger) Debugf(name string, id string, msg string, args ...interface{}) {log.WithFields(log.Fields{"name": name, "id": id}).Debugf(msg, args...)
}func gdbcConfig(conf *neo4j.Config) {conf.Log = &gdbcLogger{}
}func (gdbc *GraphDB) connectToGraphDB(url string, user string, passwd string) {var err errorgdbc.Neo4jDriver, err = neo4j.NewDriver(url, neo4j.BasicAuth(user, passwd, ""), gdbcConfig)// todo change to backofffor err != nil {。。。。}。。。。。。
}
增加verify(做了优化,如果是2s内verify过则不重新执行)(go客户端):
func (gdbc *GraphDB) verfiyNeo4jConnection() bool {if gdbc.Status == StatusRunning {log.Debug("Neo4j StatusRunning")return true}var err errorfor i := 0; i < 3; i++ {err = gdbc.Neo4jDriver.VerifyConnectivity()if err != nil {log.Errorf("Neo4j driver VerifyConnectivity failed(%v)", err)} else {break}}go func() {<-time.After(2 * time.Second)log.Debug("Neo4j set StatusUnkown")gdbc.Status = StatusUnkown}()if err != nil {log.Debug("Neo4j set StatusFail")gdbc.Status = StatusFailreturn false} else {log.Debug("Neo4j set StatusRunning")gdbc.Status = StatusRunningreturn true}
}
在措施1、2都没生效的情况下,措施3生效了,基本不再超时了。
neo4j写入时间长问题解决相关推荐
- ubuntu关机时间长问题解决
有时候我们总能遇到ubuntu关机的时候卡住,无法关机,一查看发现是" a stop job is running..." 然后后面接着一串等待时间. 这时候我们需要修改一下sys ...
- JavaCV1.5.3版本FFmpegFrameGrabber初始化的时候加载时间长的解决方法
JavaCV1.5.3版本FFmpegFrameGrabber初始化的时候加载时间长的解决方法 问题描述 问题分析 解决方法 项目码云(Gitee)地址:https://gitee.com/banma ...
- MasterAlign对位时间长异常处理
一.问题描述 最终呈现效果为:对位时间长. 二.问题分析: Fig.1 影响MasterAlign对位时间因素 2.1机构问题 上料偏差大 可以把视觉拍照延迟设置500ms以上(为了便于观察,可以将延 ...
- 分片提升容量难度大,时间长,故而Vitalik提出使用BCH或者ETC作为以太坊数据层
7月25日晚,莱比特矿池CEO江卓尔在巴比特在线直播节目She Knows中表示,分布式系统(去中心化系统)有一个不可能三角,称为分布式系统CAP定理,指的是在一个分布式系统中,Consistency ...
- android 系统(162)---O版本的Camera Startup time比N版本时间长
O版本的Camera Startup time比N版本时间长 从N版本升级到O版本后,Camera Startup time 增加大约100ms. N 版本log: 12304 01-06 13:39 ...
- iframe中src参数过长问题解决
iframe中src参数过长问题解决 参考文章: (1)iframe中src参数过长问题解决 (2)https://www.cnblogs.com/pengfei25/articles/7473503 ...
- 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了.可能是电脑出了别的问题了,来看看教程的说法. 正在准备配置w ...
- GC日志中sys时间比user时间长该如何处理?
原文在这里: GC日志中sys时间比user时间长该如何处理? GC日志中会详细的记录每一次GC事件所花费的时间信息,每一个GC事件所花费的时间都会以'user'.'sys'.'real'3个维度来记 ...
- 鸿蒙系统一直重启怎么办,我的电脑能开机随后就是进不了系统一直黑在那边,时间长了就自动重启...
一般自动重启有两种,一个是关机前的操作卡了引起的,另一个是每回关机都是重启,下面分别说一下. 1)关机前的操作引起的: 玩游戏.看视频.或操作大程序.或电脑用的时间长了,这时是很卡的,你要有一些耐心等 ...
最新文章
- 数 学 专 业 劝 退 指 南
- 第二十四课:能量和功率
- ajax img标签,如何将属性添加到img标签以用于ajax调用
- C# 按部门拆分excel文件
- 错误: 找不到或无法加载主类 org.apache.hadoop.hbase.util.GetJavaProperty
- Linux进程全解4——fork创建子进程
- 6.dubbo常用的xml配置有哪些_【面试篇】必须掌握的Spring 常用注解
- 数据库SQL命令经典面试题65道
- Linux查看负载相关命令
- 页面分享怎么知道通过哪条链接进来的_亚马逊Coupon怎么设置?亚马逊Coupon对获取流量有哪些帮助?...
- C++高级教程之多线程
- as常用固定搭配_人民日报整理:英语常用介词固定搭配,太实用了!
- Atitit 前端性能提升方案 目录 1. 优化分类	2 1.1. ,第一类是页面级别的优化,	2 1.2. 第二类则是代码级别的优化,	2 1.3. 前端性能优化的七大手段,包括减少请求数量、减小
- Golang、python中的一个异或加密算法,用来加密字符串。
- python UI自动化(一)
- PHP沉思录(转载)
- springboot 整合redis配置文件
- Auto 3dmax安装资源
- 笔记本电脑频繁自动重启_电脑为何总是自动重启 电脑自动重启原因【解决方法】...
- 华为asph是什么型号_华为triple camera这是什么型号